From: John Wiegley Date: Fri, 11 Mar 2016 21:33:32 +0000 (-0800) Subject: Merge from origin/emacs-25 X-Git-Tag: archive/raspbian/1%29.2+1-2+rpi1^2~5^2~21^2~3373 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:/?a=commitdiff_plain;h=63efcc268635dea78c6bd80749eae4ee2c72d717;p=emacs.git Merge from origin/emacs-25 facb5e2 Update Emacs manual section related to character folding 4efea8e ; * etc/DEBUG: Fix a typo. (Bug#22984) f8df21b Update admin/notes/unicode 950be68 Add symref-filepattern entries for c?perl-mode 8b8a6ad Don't use XRANDR 1.3 extensions if the server doesn't support them. 985dacf ; NEWS update for the last change in etags 741a6f8 Sync with gnulib 7352c6c Rework C source files to avoid ^( a589e9a By default, etags produces unqualified Perl tag names 72c7438 Indent methods with keyword names correctly 28532a9 Propertize character literals and special global variables differently a7d6f39 ; Fix last change in NEWS 83b2a20 Change how /etc/NEWS presents character folding b417c5a Revert "Revert "Backport: * lisp/isearch.el: Turn char-folding off by default"" 711ca36 Properly handle lambda as read function (bug 22961) 1b9d616 Propertize operator symbol names with symbol syntax class 9b16bc2 Stop recognizing :#{} as symbol in ruby-mode 366ec77 Allow using the left shift operator without spaces on both sides 02bf7cc Properly handle unquoting in wdired (bug 22938) 16cf469 ; Spelling fix and tighten up comment f50bc04 Allow splat operator before percent literal 991c801 Don't apply the return value of goto-char as syntax class 6e63b3e Guard against nested percent literals 066f3bc Recognize iuwu-mod after an escaped newline 6f7a57c Fix symbolic mode string conversion for s and t 50b9826 Update 'ucs-names' database 993b2fb Improve doc string of 'shell-command' b71c717 Make the code in movemail_strftime more general cc057e4 Speed up redisplay of binary files with long series of nulls e51b27e Remove the highlighting support for quoting 'like this' inside Lisp docstrings b1abce1 Restore leading space in movemail pop output 98b8d44 Fix bidi-paragraph-direction in Rmail view buffer dc9d837 Don't misindent computed property generator methods 7923112 Fix mbox files produced by movemail on MS-Windows c45a1ca doc string file descriptor exhaustion fix 265141b Fix Bug#22814 --- 63efcc268635dea78c6bd80749eae4ee2c72d717 diff --cc lisp/progmodes/ruby-mode.el index fb942b34ddc,be8f96dcfd9..d2370741972 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el @@@ -889,12 -888,18 +888,18 @@@ and `\\' when preceded by `?'. ((and (eq c ?:) (or (not b) (eq (char-syntax b) ? )))) ((eq c ?\\) (eq b ??))))) - (defun ruby-singleton-class-p (&optional pos) + (defun ruby-verify-heredoc (&optional pos) (save-excursion (when pos (goto-char pos)) - (forward-word -1) - (and (or (bolp) (not (eq (char-before (point)) ?_))) - (looking-at ruby-singleton-class-re)))) + ;; Not right after a symbol or prefix character. + ;; Method names are only allowed when separated by + ;; whitespace. Not a limitation in Ruby, but it's hard for + ;; us to do better. + (when (not (memq (car (syntax-after (1- (point)))) '(2 3 6 10))) + (or (not (memq (char-before) '(?\s ?\t))) - (ignore (forward-word-strictly -1)) ++ (ignore (forward-word -1)) + (eq (char-before) ?_) + (not (looking-at ruby-singleton-class-re)))))) (defun ruby-expr-beg (&optional option) "Check if point is possibly at the beginning of an expression. diff --cc test/lisp/progmodes/ruby-mode-tests.el index da8d77c5157,00000000000..4fa7470218a mode 100644,000000..100644 --- a/test/lisp/progmodes/ruby-mode-tests.el +++ b/test/lisp/progmodes/ruby-mode-tests.el @@@ -1,713 -1,0 +1,730 @@@ +;;; ruby-mode-tests.el --- Test suite for ruby-mode + +;; Copyright (C) 2012-2016 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: + +;;; Code: + +(require 'ert) +(require 'ruby-mode) + +(defmacro ruby-with-temp-buffer (contents &rest body) + (declare (indent 1) (debug t)) + `(with-temp-buffer + (insert ,contents) + (ruby-mode) + ,@body)) + +(defun ruby-should-indent (content column) + "Assert indentation COLUMN on the last line of CONTENT." + (ruby-with-temp-buffer content + (indent-according-to-mode) + (should (= (current-indentation) column)))) + +(defun ruby-should-indent-buffer (expected content) + "Assert that CONTENT turns into EXPECTED after the buffer is re-indented. + +The whitespace before and including \"|\" on each line is removed." + (ruby-with-temp-buffer (ruby-test-string content) + (indent-region (point-min) (point-max)) + (should (string= (ruby-test-string expected) (buffer-string))))) + +(defun ruby-test-string (s &rest args) + (apply 'format (replace-regexp-in-string "^[ \t]*|" "" s) args)) + +(defun ruby-assert-state (content index value &optional point) + "Assert syntax state values at the end of CONTENT. + +VALUES-PLIST is a list with alternating index and value elements." + (ruby-with-temp-buffer content + (when point (goto-char point)) + (syntax-propertize (point)) + (should (eq (nth index + (parse-partial-sexp (point-min) (point))) + value)))) + +(defun ruby-assert-face (content pos face) + (ruby-with-temp-buffer content + (font-lock-ensure nil nil) + (should (eq face (get-text-property pos 'face))))) + +(ert-deftest ruby-indent-after-symbol-made-from-string-interpolation () + "It can indent the line after symbol made using string interpolation." + (ruby-should-indent "def foo(suffix)\n :\"bar#{suffix}\"\n" + ruby-indent-level)) + +(ert-deftest ruby-indent-after-js-style-symbol-with-block-beg-name () + "JS-style hash symbol can have keyword name." + (ruby-should-indent "link_to \"home\", home_path, class: \"foo\"\n" 0)) + +(ert-deftest ruby-discern-singleton-class-from-heredoc () + (ruby-assert-state "foo < 5 } + | .map { |str| str.downcase }" + "one.two.three + | .four + | + |my_array.select { |str| str.size > 5 } + | .map { |str| str.downcase }"))) + +(ert-deftest ruby-move-to-block-stops-at-indentation () + (ruby-with-temp-buffer "def f\nend" + (beginning-of-line) + (ruby-move-to-block -1) + (should (looking-at "^def")))) + +(ert-deftest ruby-toggle-block-to-do-end () + (ruby-with-temp-buffer "foo {|b|\n}" + (beginning-of-line) + (ruby-toggle-block) + (should (string= "foo do |b|\nend" (buffer-string))))) + +(ert-deftest ruby-toggle-block-to-brace () + (let ((pairs '((17 . "foo { |b| b + 2 }") + (16 . "foo { |b|\n b + 2\n}")))) + (dolist (pair pairs) + (with-temp-buffer + (let ((fill-column (car pair))) + (insert "foo do |b|\n b + 2\nend") + (ruby-mode) + (beginning-of-line) + (ruby-toggle-block) + (should (string= (cdr pair) (buffer-string)))))))) + +(ert-deftest ruby-toggle-block-to-multiline () + (ruby-with-temp-buffer "foo {|b| b + 1}" + (beginning-of-line) + (ruby-toggle-block) + (should (string= "foo do |b|\n b + 1\nend" (buffer-string))))) + +(ert-deftest ruby-toggle-block-with-interpolation () + (ruby-with-temp-buffer "foo do\n \"#{bar}\"\nend" + (beginning-of-line) + (ruby-toggle-block) + (should (string= "foo { \"#{bar}\" }" (buffer-string))))) + +(ert-deftest ruby-recognize-symbols-starting-with-at-character () + (ruby-assert-face ":@abc" 3 font-lock-constant-face)) + +(ert-deftest ruby-hash-character-not-interpolation () + (ruby-assert-face "\"This is #{interpolation}\"" 15 + font-lock-variable-name-face) + (ruby-assert-face "\"This is \\#{no interpolation} despite the #\"" + 15 font-lock-string-face) + (ruby-assert-face "\n#@comment, not ruby code" 5 font-lock-comment-face) + (ruby-assert-state "\n#@comment, not ruby code" 4 t) + (ruby-assert-face "# A comment cannot have #{an interpolation} in it" + 30 font-lock-comment-face) + (ruby-assert-face "# #{comment}\n \"#{interpolation}\"" 16 + font-lock-variable-name-face)) + +(ert-deftest ruby-interpolation-suppresses-quotes-inside () + (let ((s "\"
  • #{@files.join(\"
  • \")}
\"")) + (ruby-assert-state s 8 nil) + (ruby-assert-face s 9 font-lock-string-face) + (ruby-assert-face s 10 font-lock-variable-name-face) + (ruby-assert-face s 41 font-lock-string-face))) + +(ert-deftest ruby-interpolation-suppresses-one-double-quote () + (let ((s "\"foo#{'\"'}\"")) + (ruby-assert-state s 8 nil) + (ruby-assert-face s 8 font-lock-variable-name-face) + (ruby-assert-face s 11 font-lock-string-face))) + +(ert-deftest ruby-interpolation-suppresses-one-backtick () + (let ((s "`as#{'`'}das`")) + (ruby-assert-state s 8 nil))) + +(ert-deftest ruby-interpolation-keeps-non-quote-syntax () + (let ((s "\"foo#{baz.tee}bar\"")) + (ruby-with-temp-buffer s + (goto-char (point-min)) + (ruby-mode) + (syntax-propertize (point-max)) + (search-forward "tee") + (should (string= (thing-at-point 'symbol) "tee"))))) + +(ert-deftest ruby-interpolation-inside-percent-literal () + (let ((s "%( #{boo} )")) + (ruby-assert-face s 1 font-lock-string-face) + (ruby-assert-face s 4 font-lock-variable-name-face) + (ruby-assert-face s 10 font-lock-string-face) + (ruby-assert-state s 8 nil))) + +(ert-deftest ruby-interpolation-inside-percent-literal-with-paren () + :expected-result :failed + (let ((s "%(^#{\")\"}^)")) + (ruby-assert-face s 3 font-lock-string-face) + (ruby-assert-face s 4 font-lock-variable-name-face) + (ruby-assert-face s 10 font-lock-string-face) + ;; It's confused by the closing paren in the middle. + (ruby-assert-state s 8 nil))) + +(ert-deftest ruby-interpolation-inside-double-quoted-percent-literals () + (ruby-assert-face "%Q{foo #@bar}" 8 font-lock-variable-name-face) + (ruby-assert-face "%W{foo #@bar}" 8 font-lock-variable-name-face) + (ruby-assert-face "%r{foo #@bar}" 8 font-lock-variable-name-face) + (ruby-assert-face "%x{foo #@bar}" 8 font-lock-variable-name-face)) + +(ert-deftest ruby-no-interpolation-in-single-quoted-literals () + (ruby-assert-face "'foo #@bar'" 7 font-lock-string-face) + (ruby-assert-face "%q{foo #@bar}" 8 font-lock-string-face) + (ruby-assert-face "%w{foo #@bar}" 8 font-lock-string-face) + (ruby-assert-face "%s{foo #@bar}" 8 font-lock-string-face)) + +(ert-deftest ruby-interpolation-after-dollar-sign () + (ruby-assert-face "\"$#{balance}\"" 2 'font-lock-string-face) + (ruby-assert-face "\"$#{balance}\"" 3 'font-lock-variable-name-face)) + +(ert-deftest ruby-no-unknown-percent-literals () + ;; No folding of case. + (ruby-assert-face "%S{foo}" 4 nil) + (ruby-assert-face "%R{foo}" 4 nil)) + ++(ert-deftest ruby-no-nested-percent-literals () ++ (ruby-with-temp-buffer "a = %w[b %()]" ++ (syntax-propertize (point)) ++ (should (null (nth 8 (syntax-ppss)))) ++ (should (eq t (nth 3 (syntax-ppss (1- (point-max)))))) ++ (search-backward "[") ++ (should (eq t (nth 3 (syntax-ppss)))))) ++ +(ert-deftest ruby-add-log-current-method-examples () + (let ((pairs '(("foo" . "#foo") + ("C.foo" . ".foo") + ("self.foo" . ".foo")))) + (dolist (pair pairs) + (let ((name (car pair)) + (value (cdr pair))) + (ruby-with-temp-buffer (ruby-test-string + "module M + | class C + | def %s + | _ + | end + | end + |end" + name) + (search-backward "_") + (forward-line) + (should (string= (ruby-add-log-current-method) + (format "M::C%s" value)))))))) + +(ert-deftest ruby-add-log-current-method-outside-of-method () + (ruby-with-temp-buffer (ruby-test-string + "module M + | class C + | def foo + | end + | _ + | end + |end") + (search-backward "_") + (should (string= (ruby-add-log-current-method)"M::C")))) + +(ert-deftest ruby-add-log-current-method-in-singleton-class () + (ruby-with-temp-buffer (ruby-test-string + "class C + | class << self + | def foo + | _ + | end + | end + |end") + (search-backward "_") + (should (string= (ruby-add-log-current-method) "C.foo")))) + +(ert-deftest ruby-add-log-current-method-namespace-shorthand () + (ruby-with-temp-buffer (ruby-test-string + "class C::D + | def foo + | _ + | end + |end") + (search-backward "_") + (should (string= (ruby-add-log-current-method) "C::D#foo")))) + +(ert-deftest ruby-add-log-current-method-after-inner-class () + (ruby-with-temp-buffer (ruby-test-string + "module M + | class C + | class D + | end + | def foo + | _ + | end + | end + |end") + (search-backward "_") + (should (string= (ruby-add-log-current-method) "M::C#foo")))) + +(defvar ruby-block-test-example + (ruby-test-string + "class C + | def foo + | 1 + | end + | + | def bar + | 2 + | end + | + | def baz + |some do + |3 + | end + | end + |end")) + +(defmacro ruby-deftest-move-to-block (name &rest body) + (declare (indent defun)) + `(ert-deftest ,(intern (format "ruby-move-to-block-%s" name)) () + (with-temp-buffer + (insert ruby-block-test-example) + (ruby-mode) + (goto-char (point-min)) + ,@body))) + +(ruby-deftest-move-to-block works-on-do + (forward-line 10) + (ruby-end-of-block) + (should (= 13 (line-number-at-pos))) + (ruby-beginning-of-block) + (should (= 11 (line-number-at-pos)))) + +(ruby-deftest-move-to-block zero-is-noop + (forward-line 4) + (ruby-move-to-block 0) + (should (= 5 (line-number-at-pos)))) + +(ruby-deftest-move-to-block ok-with-three + (forward-line 1) + (ruby-move-to-block 3) + (should (= 14 (line-number-at-pos)))) + +(ruby-deftest-move-to-block ok-with-minus-two + (forward-line 9) + (ruby-move-to-block -2) + (should (= 2 (line-number-at-pos)))) + +(ert-deftest ruby-move-to-block-skips-percent-literal () + (dolist (s (list (ruby-test-string + "foo do + | a = %%w( + | def yaa + | ) + |end") + (ruby-test-string + "foo do + | a = %%w| + | end + | | + |end"))) + (ruby-with-temp-buffer s + (goto-char (point-min)) + (ruby-end-of-block) + (should (= 5 (line-number-at-pos))) + (ruby-beginning-of-block) + (should (= 1 (line-number-at-pos)))))) + +(ert-deftest ruby-move-to-block-skips-heredoc () + (ruby-with-temp-buffer + (ruby-test-string + "if something_wrong? + | ActiveSupport::Deprecation.warn(<<-eowarn) + | boo hoo + | end + | eowarn + |end") + (goto-char (point-min)) + (ruby-end-of-block) + (should (= 6 (line-number-at-pos))) + (ruby-beginning-of-block) + (should (= 1 (line-number-at-pos))))) + +(ert-deftest ruby-move-to-block-does-not-fold-case () + (ruby-with-temp-buffer + (ruby-test-string + "foo do + | Module.to_s + |end") + (let ((case-fold-search t)) + (ruby-beginning-of-block)) + (should (= 1 (line-number-at-pos))))) + +(ert-deftest ruby-move-to-block-moves-from-else-to-if () + (ruby-with-temp-buffer (ruby-test-string + "if true + | nested_block do + | end + |else + |end") + (goto-char (point-min)) + (forward-line 3) + (ruby-beginning-of-block) + (should (= 1 (line-number-at-pos))))) + +(ert-deftest ruby-beginning-of-defun-does-not-fold-case () + (ruby-with-temp-buffer + (ruby-test-string + "class C + | def bar + | Class.to_s + | end + |end") + (goto-char (point-min)) + (forward-line 3) + (let ((case-fold-search t)) + (beginning-of-defun)) + (should (= 2 (line-number-at-pos))))) + +(ert-deftest ruby-end-of-defun-skips-to-next-line-after-the-method () + (ruby-with-temp-buffer + (ruby-test-string + "class D + | def tee + | 'ho hum' + | end + |end") + (goto-char (point-min)) + (forward-line 1) + (end-of-defun) + (should (= 5 (line-number-at-pos))))) + +(defvar ruby-sexp-test-example + (ruby-test-string + "class C + | def foo + | self.end + | D.new.class + | [1, 2, 3].map do |i| + | i + 1 + | end.sum + | end + |end")) + +(ert-deftest ruby-forward-sexp-skips-method-calls-with-keyword-names () + (ruby-with-temp-buffer ruby-sexp-test-example + (goto-line 2) + (ruby-forward-sexp) + (should (= 8 (line-number-at-pos))))) + +(ert-deftest ruby-backward-sexp-skips-method-calls-with-keyword-names () + (ruby-with-temp-buffer ruby-sexp-test-example + (goto-line 8) + (end-of-line) + (ruby-backward-sexp) + (should (= 2 (line-number-at-pos))))) + +(ert-deftest ruby--insert-coding-comment-ruby-style () + (with-temp-buffer + (let ((ruby-encoding-magic-comment-style 'ruby)) + (ruby--insert-coding-comment "utf-8") + (should (string= "# coding: utf-8\n" (buffer-string)))))) + +(ert-deftest ruby--insert-coding-comment-emacs-style () + (with-temp-buffer + (let ((ruby-encoding-magic-comment-style 'emacs)) + (ruby--insert-coding-comment "utf-8") + (should (string= "# -*- coding: utf-8 -*-\n" (buffer-string)))))) + +(ert-deftest ruby--insert-coding-comment-custom-style () + (with-temp-buffer + (let ((ruby-encoding-magic-comment-style 'custom) + (ruby-custom-encoding-magic-comment-template "# encoding: %s\n")) + (ruby--insert-coding-comment "utf-8") + (should (string= "# encoding: utf-8\n\n" (buffer-string)))))) + + +(provide 'ruby-mode-tests) + +;;; ruby-mode-tests.el ends here diff --cc test/manual/etags/CTAGS.good index ebde715272a,00000000000..19bc0bef657 mode 100644,000000..100644 --- a/test/manual/etags/CTAGS.good +++ b/test/manual/etags/CTAGS.good @@@ -1,4618 -1,0 +1,4618 @@@ +#a-defer-word forth-src/test-forth.fth /^defer #a-defer-word$/ +#some-storage forth-src/test-forth.fth /^2000 buffer: #some-storage$/ +$0x80 c-src/sysdep.h 32 +$SYS_##syscall_na c-src/sysdep.h 31 +$domain php-src/lce_functions.php 175 +$filename php-src/lce_functions.php 174 +$ignore_ws php-src/lce_functions.php 171 +$memassign php-src/ptest.php 9 +$memassign_space php-src/ptest.php 10 +$member php-src/ptest.php 8 +$msgid php-src/lce_functions.php 107 +$msgid php-src/lce_functions.php 165 +$msgid_lc php-src/lce_functions.php 113 +$msgstr php-src/lce_functions.php 108 +$msgstr php-src/lce_functions.php 166 +$msgstr_lc php-src/lce_functions.php 114 +$po_entries php-src/lce_functions.php 172 +$poe_num php-src/lce_functions.php 173 +$por_a php-src/lce_functions.php 500 +$prefix php-src/lce_functions.php 72 +$state php-src/lce_functions.php 170 +$sys_comment php-src/lce_functions.php 110 +$sys_comment php-src/lce_functions.php 168 +$sys_comment_lc php-src/lce_functions.php 116 +$test php-src/ptest.php 12 +$unk_comment php-src/lce_functions.php 111 +$unk_comment php-src/lce_functions.php 169 +$unk_comment_lc php-src/lce_functions.php 117 +$user_comment php-src/lce_functions.php 109 +$user_comment php-src/lce_functions.php 167 +$user_comment_lc php-src/lce_functions.php 115 +${CHECKOBJS} make-src/Makefile /^${CHECKOBJS}: CFLAGS=-g3 -DNULLFREECHECK=0$/ +%cdiff make-src/Makefile /^%cdiff: CTAGS% CTAGS ${infiles}$/ +%ediff make-src/Makefile /^%ediff: ETAGS% ETAGS ${infiles}$/ +($_,$flag,$opt,$f,$r,@temp perl-src/yagrip.pl 8 +($prog,$_,@list perl-src/yagrip.pl 39 +($string,$flag,@string,@temp,@last perl-src/yagrip.pl 40 +(a-forth-constant forth-src/test-forth.fth /^constant (a-forth-constant$/ +(another-forth-word forth-src/test-forth.fth /^: (another-forth-word) ( -- )$/ ++ ruby-src/test.rb /^ def +(y)$/ ++ tex-src/texinfo.tex /^\\def+{{\\tt \\char 43}}$/ +.PRECIOUS make-src/Makefile /^.PRECIOUS: ETAGS CTAGS ETAGS16 CTAGS16 ETAGS17 CTA/ +/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/ +/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/ +/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/ +/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/ +/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/space \/exclam/ +/A ps-src/rfc1245.ps /^\/A { $/ +/Acircumflex ps-src/rfc1245.ps /^\/Acircumflex \/Ecircumflex \/Aacute \/Edieresis \/Egra/ +/B ps-src/rfc1245.ps /^\/B { $/ +/BEGINBITMAP2BIT ps-src/rfc1245.ps /^\/BEGINBITMAP2BIT { $/ +/BEGINBITMAP2BITc ps-src/rfc1245.ps /^\/BEGINBITMAP2BITc { $/ +/BEGINBITMAPBW ps-src/rfc1245.ps /^\/BEGINBITMAPBW { $/ +/BEGINBITMAPBWc ps-src/rfc1245.ps /^\/BEGINBITMAPBWc { $/ +/BEGINBITMAPGRAY ps-src/rfc1245.ps /^\/BEGINBITMAPGRAY { $/ +/BEGINBITMAPGRAYc ps-src/rfc1245.ps /^\/BEGINBITMAPGRAYc { $/ +/BEGINPRINTCODE ps-src/rfc1245.ps /^\/BEGINPRINTCODE { $/ +/BF ps-src/rfc1245.ps /^\/BF { $/ +/BITMAPCOLOR ps-src/rfc1245.ps /^\/BITMAPCOLOR { $/ +/BITMAPCOLORc ps-src/rfc1245.ps /^\/BITMAPCOLORc { $/ +/BITMAPGRAY ps-src/rfc1245.ps /^\/BITMAPGRAY { $/ +/BITMAPGRAYc ps-src/rfc1245.ps /^\/BITMAPGRAYc { $/ +/C ps-src/rfc1245.ps /^\/C { $/ +/COMMONBITMAP ps-src/rfc1245.ps /^\/COMMONBITMAP { $/ +/COMMONBITMAPc ps-src/rfc1245.ps /^\/COMMONBITMAPc { $/ +/D ps-src/rfc1245.ps /^\/D {curveto} bind def$/ +/DiacriticEncoding ps-src/rfc1245.ps /^\/DiacriticEncoding [$/ +/E ps-src/rfc1245.ps /^\/E {lineto} bind def$/ +/ENDBITMAP ps-src/rfc1245.ps /^\/ENDBITMAP {$/ +/ENDPRINTCODE ps-src/rfc1245.ps /^\/ENDPRINTCODE {$/ +/F ps-src/rfc1245.ps /^\/F { $/ +/FMBEGINEPSF ps-src/rfc1245.ps /^\/FMBEGINEPSF { $/ +/FMBEGINPAGE ps-src/rfc1245.ps /^\/FMBEGINPAGE { $/ +/FMDEFINEFONT ps-src/rfc1245.ps /^\/FMDEFINEFONT { $/ +/FMDOCUMENT ps-src/rfc1245.ps /^\/FMDOCUMENT { $/ +/FMENDEPSF ps-src/rfc1245.ps /^\/FMENDEPSF {$/ +/FMENDPAGE ps-src/rfc1245.ps /^\/FMENDPAGE {$/ +/FMLOCAL ps-src/rfc1245.ps /^\/FMLOCAL {$/ +/FMNORMALIZEGRAPHICS ps-src/rfc1245.ps /^\/FMNORMALIZEGRAPHICS { $/ +/FMVERSION ps-src/rfc1245.ps /^\/FMVERSION {$/ +/FMversion ps-src/rfc1245.ps /^\/FMversion (2.0) def $/ +/Fmcc ps-src/rfc1245.ps /^\/Fmcc {$/ +/FrameDict ps-src/rfc1245.ps /^\/FrameDict 190 dict def $/ +/G ps-src/rfc1245.ps /^\/G { $/ +/H ps-src/rfc1245.ps /^\/H { $/ +/Icircumflex ps-src/rfc1245.ps /^\/Icircumflex \/Idieresis \/Igrave \/Oacute \/Ocircumfl/ +/L ps-src/rfc1245.ps /^\/L \/M \/N \/O \/P \/Q \/R \/S \/T \/U \/V \/W \/X \/Y \/Z \/brac/ +/L ps-src/rfc1245.ps /^\/L { $/ +/M ps-src/rfc1245.ps /^\/M {newpath moveto} bind def$/ +/N ps-src/rfc1245.ps /^\/N { $/ +/Ntilde ps-src/rfc1245.ps /^\/Ntilde \/Odieresis \/Udieresis \/aacute \/agrave \/aci/ +/O ps-src/rfc1245.ps /^\/O {closepath} bind def$/ +/Otilde ps-src/rfc1245.ps /^\/Otilde \/OE \/oe \/endash \/emdash \/quotedblleft \/quo/ +/P ps-src/rfc1245.ps /^\/P { $/ +/PF ps-src/rfc1245.ps /^\/PF { $/ +/R ps-src/rfc1245.ps /^\/R { $/ +/RF ps-src/rfc1245.ps /^\/RF { $/ +/RR ps-src/rfc1245.ps /^\/RR { $/ +/ReEncode ps-src/rfc1245.ps /^\/ReEncode { $/ +/S ps-src/rfc1245.ps /^\/S { $/ +/SF ps-src/rfc1245.ps /^\/SF { $/ +/T ps-src/rfc1245.ps /^\/T { $/ +/TF ps-src/rfc1245.ps /^\/TF { $/ +/U ps-src/rfc1245.ps /^\/U { $/ +/Uacute ps-src/rfc1245.ps /^\/Uacute \/Ucircumflex \/Ugrave \/dotlessi \/circumflex/ +/V ps-src/rfc1245.ps /^\/V { $/ +/W ps-src/rfc1245.ps /^\/W { $/ +/X ps-src/rfc1245.ps /^\/X { $/ +/Y ps-src/rfc1245.ps /^\/Y { $/ +/Z ps-src/rfc1245.ps /^\/Z {$/ +/atilde ps-src/rfc1245.ps /^\/atilde \/aring \/ccedilla \/eacute \/egrave \/ecircumf/ +/bl ps-src/rfc1245.ps /^\/bl { $/ +/braceright ps-src/rfc1245.ps /^\/braceright \/asciitilde \/.notdef \/Adieresis \/Aring/ +/bracketright ps-src/rfc1245.ps /^\/bracketright \/asciicircum \/underscore \/grave \/a \// +/breve ps-src/rfc1245.ps /^\/breve \/dotaccent \/ring \/cedilla \/hungarumlaut \/og/ +/cfs ps-src/rfc1245.ps /^\/cfs { $/ +/colorsetup ps-src/rfc1245.ps /^\/colorsetup {$/ +/desperatepapersize ps-src/rfc1245.ps /^\/desperatepapersize {$/ +/dieresis ps-src/rfc1245.ps /^\/dieresis \/.notdef \/AE \/Oslash \/.notdef \/.notdef \// +/dmatrix ps-src/rfc1245.ps /^\/dmatrix matrix def$/ +/dnormalize ps-src/rfc1245.ps /^\/dnormalize {$/ +/dpi ps-src/rfc1245.ps /^\/dpi 72 0 dmatrix defaultmatrix dtransform$/ +/exclamdown ps-src/rfc1245.ps /^\/exclamdown \/logicalnot \/.notdef \/florin \/.notdef / +/fakecolorsetup ps-src/rfc1245.ps /^\/fakecolorsetup {$/ +/fillprocs ps-src/rfc1245.ps /^\/fillprocs 32 array def$/ +/fl ps-src/rfc1245.ps /^\/fl { $/ +/fraction ps-src/rfc1245.ps /^\/fraction \/currency \/guilsinglleft \/guilsinglright/ +/freq ps-src/rfc1245.ps /^\/freq dpi 18.75 div 8 div round dup 0 eq {pop 1} i/ +/gn ps-src/rfc1245.ps /^\/gn { $/ +/graymode ps-src/rfc1245.ps /^\/graymode true def$/ +/grayness ps-src/rfc1245.ps /^\/grayness {$/ +/guillemotleft ps-src/rfc1245.ps /^\/guillemotleft \/guillemotright \/ellipsis \/.notdef / +/home/www/pub/etags.c.gz make-src/Makefile /^\/home\/www\/pub\/etags.c.gz: etags.c$/ +/home/www/pub/software/unix/etags.tar.gz make-src/Makefile /^\/home\/www\/pub\/software\/unix\/etags.tar.gz: Makefile/ +/hx ps-src/rfc1245.ps /^\/hx { $/ +/i ps-src/rfc1245.ps /^\/i \/j \/k \/l \/m \/n \/o \/p \/q \/r \/s \/t \/u \/v \/w \/x \/y/ +/iacute ps-src/rfc1245.ps /^\/iacute \/igrave \/icircumflex \/idieresis \/ntilde \/o/ +/ic ps-src/rfc1245.ps /^\/ic [ $/ +/inch ps-src/rfc1245.ps /^\/inch {72 mul} def$/ +/ip ps-src/rfc1245.ps /^\/ip { $/ +/less ps-src/rfc1245.ps /^\/less \/equal \/greater \/question \/at \/A \/B \/C \/D \/E/ +/lnormalize ps-src/rfc1245.ps /^\/lnormalize { $/ +/manualpapersize ps-src/rfc1245.ps /^\/manualpapersize {$/ +/max ps-src/rfc1245.ps /^\/max {2 copy lt {exch} if pop} bind def$/ +/min ps-src/rfc1245.ps /^\/min {2 copy gt {exch} if pop} bind def$/ +/ms ps-src/rfc1245.ps /^\/ms { $/ +/nbluet ps-src/rfc1245.ps /^\/nbluet 256 array def$/ +/ngrayt ps-src/rfc1245.ps /^\/ngrayt 256 array def$/ +/ngreent ps-src/rfc1245.ps /^\/ngreent 256 array def$/ +/normalize ps-src/rfc1245.ps /^\/normalize {$/ +/nredt ps-src/rfc1245.ps /^\/nredt 256 array def$/ +/numbersign ps-src/rfc1245.ps /^\/numbersign \/dollar \/percent \/ampersand \/quotesing/ +/ocircumflex ps-src/rfc1245.ps /^\/ocircumflex \/odieresis \/otilde \/uacute \/ugrave \/u/ +/ordfeminine ps-src/rfc1245.ps /^\/ordfeminine \/ordmasculine \/.notdef \/ae \/oslash \/q/ +/pagedimen ps-src/rfc1245.ps /^\/pagedimen { $/ +/papersize ps-src/rfc1245.ps /^\/papersize {$/ +/paragraph ps-src/rfc1245.ps /^\/paragraph \/germandbls \/registered \/copyright \/tra/ +/parenright ps-src/rfc1245.ps /^\/parenright \/asterisk \/plus \/comma \/hyphen \/period/ +/periodcentered ps-src/rfc1245.ps /^\/periodcentered \/quotesinglbase \/quotedblbase \/per/ +/quoteleft ps-src/rfc1245.ps /^\/quoteleft \/quoteright \/.notdef \/.notdef \/ydieresi/ +/restorematrix ps-src/rfc1245.ps /^\/restorematrix {$/ +/s1 ps-src/rfc1245.ps /^\/s1 1 string def$/ +/sangle ps-src/rfc1245.ps /^\/sangle 1 0 dmatrix defaultmatrix dtransform exch / +/savematrix ps-src/rfc1245.ps /^\/savematrix {$/ +/setmanualfeed ps-src/rfc1245.ps /^\/setmanualfeed {$/ +/setpapername ps-src/rfc1245.ps /^\/setpapername { $/ +/setpattern ps-src/rfc1245.ps /^\/setpattern {$/ +/two ps-src/rfc1245.ps /^\/two \/three \/four \/five \/six \/seven \/eight \/nine \// +/udieresis ps-src/rfc1245.ps /^\/udieresis \/dagger \/.notdef \/cent \/sterling \/secti/ +/wbytes ps-src/rfc1245.ps /^\/wbytes { $/ +/wh ps-src/rfc1245.ps /^\/wh { $/ +/yen ps-src/rfc1245.ps /^\/yen \/.notdef \/.notdef \/.notdef \/.notdef \/.notdef / +:a-forth-dictionary-entry forth-src/test-forth.fth /^create :a-forth-dictionary-entry$/ +< tex-src/texinfo.tex /^\\def<{{\\tt \\less}}$/ +<< ruby-src/test.rb /^ def <<(y)$/ +<= ruby-src/test.rb /^ def <=(y)$/ +<=> ruby-src/test.rb /^ def <=>(y)$/ += tex-src/texinfo.tex /^\\global\\let\\section = \\numberedsec$/ += tex-src/texinfo.tex /^\\global\\let\\subsection = \\numberedsubsec$/ += tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\numberedsubsubsec$/ += tex-src/texinfo.tex /^\\global\\let\\section = \\appendixsec$/ += tex-src/texinfo.tex /^\\global\\let\\subsection = \\appendixsubsec$/ += tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\appendixsubsubsec$/ += tex-src/texinfo.tex /^\\global\\let\\section = \\unnumberedsec$/ += tex-src/texinfo.tex /^\\global\\let\\subsection = \\unnumberedsubsec$/ += tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\unnumberedsubsubsec$/ += tex-src/texinfo.tex /^\\global\\let\\section = \\numberedsec$/ += tex-src/texinfo.tex /^\\global\\let\\subsection = \\numberedsubsec$/ += tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\numberedsubsubsec$/ += tex-src/texinfo.tex /^\\global\\def={{\\tt \\char 61}}}$/ +=/f ada-src/etags-test-for.ada /^ function "=" (L, R : System.Address) return Boo/ +== ruby-src/test.rb /^ def ==(y)$/ +=== ruby-src/test.rb /^ def ===(y)$/ +=\indexdummyfont tex-src/texinfo.tex /^\\let\\cite=\\indexdummyfont$/ +=\relax tex-src/texinfo.tex /^\\let\\chapter=\\relax$/ +=\relax tex-src/texinfo.tex /^\\let\\section=\\relax$/ +=\relax tex-src/texinfo.tex /^\\let\\subsection=\\relax$/ +=\relax tex-src/texinfo.tex /^\\let\\subsubsection=\\relax$/ +=\relax tex-src/texinfo.tex /^\\let\\appendix=\\relax$/ +=\smartitalic tex-src/texinfo.tex /^\\let\\cite=\\smartitalic$/ +> tex-src/texinfo.tex /^\\def>{{\\tt \\gtr}}$/ +>field1 forth-src/test-forth.fth /^ 9 field >field1$/ +>field2 forth-src/test-forth.fth /^ 5 field >field2$/ +A c.c 162 +A cp-src/c.C 39 +A cp-src/c.C 56 +A cp-src/c.C 57 +A cp-src/c.C /^void A::A() {}$/ +A cp-src/c.C 73 +A cp-src/c.C 117 +A cp-src/fail.C 7 +A cp-src/fail.C 23 +A ruby-src/test1.ru /^class A$/ +A ruby-src/test1.ru /^module A$/ +ABC ruby-src/test1.ru 11 +ADASRC make-src/Makefile /^ADASRC=etags-test-for.ada 2ataspri.adb 2ataspri.ad/ +ADDRESS c-src/emacs/src/gmalloc.c /^#define ADDRESS(B) ((void *) (((B) - 1) * BLOCKSIZ/ +ALIGNOF_STRUCT_LISP_VECTOR c-src/emacs/src/lisp.h 1378 +ALLOCATED_BEFORE_DUMPING c-src/emacs/src/gmalloc.c /^#define ALLOCATED_BEFORE_DUMPING(P) \\$/ +ALLOCATE_PSEUDOVECTOR c-src/emacs/src/lisp.h /^#define ALLOCATE_PSEUDOVECTOR(type, field, tag) / +ALLOCATE_ZEROED_PSEUDOVECTOR c-src/emacs/src/lisp.h /^#define ALLOCATE_ZEROED_PSEUDOVECTOR(type, field, / +AND y-src/cccp.c 11 +ANSIC c-src/h.h 84 +ANSIC c-src/h.h 85 +AREF c-src/emacs/src/lisp.h /^AREF (Lisp_Object array, ptrdiff_t idx)$/ +ARGS make-src/Makefile /^ARGS=- < srclist$/ +ARITH_EQUAL c-src/emacs/src/lisp.h 3498 +ARITH_GRTR c-src/emacs/src/lisp.h 3501 +ARITH_GRTR_OR_EQUAL c-src/emacs/src/lisp.h 3503 +ARITH_LESS c-src/emacs/src/lisp.h 3500 +ARITH_LESS_OR_EQUAL c-src/emacs/src/lisp.h 3502 +ARITH_NOTEQUAL c-src/emacs/src/lisp.h 3499 +ARRAYELTS c-src/emacs/src/lisp.h /^#define ARRAYELTS(arr) (sizeof (arr) \/ sizeof (arr/ +ARRAYP c-src/emacs/src/lisp.h /^ARRAYP (Lisp_Object x)$/ +ARRAY_MARK_FLAG c-src/emacs/src/lisp.h 768 +ASCII_CHAR_P c-src/emacs/src/lisp.h /^#define ASCII_CHAR_P(c) UNSIGNED_CMP (c, <, 0x80)$/ +ASET c-src/emacs/src/lisp.h /^ASET (Lisp_Object array, ptrdiff_t idx, Lisp_Objec/ +ASIZE c-src/emacs/src/lisp.h /^ASIZE (Lisp_Object array)$/ +ASRC make-src/Makefile /^ASRC=empty.zz empty.zz.gz$/ +AST_Array::AST_Array cp-src/c.C /^AST_Array::AST_Array(UTL_ScopedName *n, unsigned l/ +AST_ConcreteType::AST_ConcreteType cp-src/c.C /^AST_ConcreteType::AST_ConcreteType(AST_Decl::NodeT/ +AST_Root cp-src/c.C 92 +AT cp-src/c.C 52 +AU cp-src/c.C 53 +AUTOLOADP c-src/emacs/src/lisp.h /^AUTOLOADP (Lisp_Object x)$/ +AUTO_CONS c-src/emacs/src/lisp.h /^#define AUTO_CONS(name, a, b) Lisp_Object name = A/ +AUTO_CONS_EXPR c-src/emacs/src/lisp.h /^#define AUTO_CONS_EXPR(a, b) \\$/ +AUTO_LIST1 c-src/emacs/src/lisp.h /^#define AUTO_LIST1(name, a) \\$/ +AUTO_LIST2 c-src/emacs/src/lisp.h /^#define AUTO_LIST2(name, a, b) \\$/ +AUTO_LIST3 c-src/emacs/src/lisp.h /^#define AUTO_LIST3(name, a, b, c) \\$/ +AUTO_LIST4 c-src/emacs/src/lisp.h /^#define AUTO_LIST4(name, a, b, c, d) \\$/ +AUTO_STRING c-src/emacs/src/lisp.h /^#define AUTO_STRING(name, str) \\$/ +AVAIL_ALLOCA c-src/emacs/src/lisp.h /^#define AVAIL_ALLOCA(size) (sa_avail -= (size), al/ +Abort_Handler_Pointer/t ada-src/2ataspri.ads /^ type Abort_Handler_Pointer is access procedure / +Abort_Task/p ada-src/2ataspri.adb /^ procedure Abort_Task (T : TCB_Ptr) is$/ +Abort_Task/p ada-src/2ataspri.ads /^ procedure Abort_Task (T : TCB_Ptr);$/ +Abort_Wrapper/p ada-src/2ataspri.adb /^ procedure Abort_Wrapper$/ +Abort_Wrapper/p ada-src/2ataspri.adb /^ procedure Abort_Wrapper$/ +Ada_funcs c-src/etags.c /^Ada_funcs (FILE *inf)$/ +Ada_getit c-src/etags.c /^Ada_getit (FILE *inf, const char *name_qualifier)$/ +Ada_help c-src/etags.c 475 +Ada_suffixes c-src/etags.c 473 +AddNullToNmStr pas-src/common.pas /^function AddNullToNmStr; (*($/ +Address_To_Call_State/f ada-src/2ataspri.adb /^ function Address_To_Call_State is new$/ +Address_To_TCB_Ptr/f ada-src/2ataspri.ads /^ function Address_To_TCB_Ptr is new$/ +Advanced usage tex-src/gzip.texi /^@node Advanced usage, Environment, Invoking gzip, / +Aligned_Cons c-src/emacs/src/lisp.h 4670 +Aligned_String c-src/emacs/src/lisp.h 4676 +AppendTextString pas-src/common.pas /^function AppendTextString;(*($/ +Arith_Comparison c-src/emacs/src/lisp.h 3497 +Asm_help c-src/etags.c 504 +Asm_labels c-src/etags.c /^Asm_labels (FILE *inf)$/ +Asm_suffixes c-src/etags.c 493 +B cp-src/c.C 54 +B cp-src/c.C 56 +B cp-src/c.C 74 +B cp-src/c.C /^void B::B() {}$/ +B cp-src/c.C 122 +B cp-src/fail.C 8 +B cp-src/fail.C 24 +B ruby-src/test1.ru /^ class B$/ +BE_Node cp-src/c.C /^void BE_Node::BE_Node() {}$/ +BE_Node cp-src/c.C 77 +BITS_PER_BITS_WORD c-src/emacs/src/lisp.h 125 +BITS_PER_BITS_WORD c-src/emacs/src/lisp.h 129 +BITS_PER_CHAR c-src/emacs/src/lisp.h 136 +BITS_PER_EMACS_INT c-src/emacs/src/lisp.h 139 +BITS_PER_LONG c-src/emacs/src/lisp.h 138 +BITS_PER_SHORT c-src/emacs/src/lisp.h 137 +BITS_WORD_MAX c-src/emacs/src/lisp.h 124 +BITS_WORD_MAX c-src/emacs/src/lisp.h 128 +BLACK cp-src/screen.hpp 12 +BLOCK c-src/emacs/src/gmalloc.c /^#define BLOCK(A) (((char *) (A) - _heapbase) \/ BLO/ +BLOCKIFY c-src/emacs/src/gmalloc.c /^#define BLOCKIFY(SIZE) (((SIZE) + BLOCKSIZE - 1) \// +BLOCKLOG c-src/emacs/src/gmalloc.c 125 +BLOCKSIZE c-src/emacs/src/gmalloc.c 126 +BLUE cp-src/screen.hpp 13 +BOOL_VECTOR_BITS_PER_CHAR c-src/emacs/src/lisp.h 114 +BOOL_VECTOR_BITS_PER_CHAR c-src/emacs/src/lisp.h 115 +BOOL_VECTOR_P c-src/emacs/src/lisp.h /^BOOL_VECTOR_P (Lisp_Object a)$/ +BROWN cp-src/screen.hpp 18 +BUFFERP c-src/emacs/src/lisp.h /^BUFFERP (Lisp_Object a)$/ +BUFFERSIZE objc-src/Subprocess.h 43 +BUFFER_OBJFWDP c-src/emacs/src/lisp.h /^BUFFER_OBJFWDP (union Lisp_Fwd *a)$/ +BYTE_MARK_STACK c-src/emacs/src/lisp.h 3181 +Bar lua-src/test.lua /^function Square.something:Bar ()$/ +Bar perl-src/kai-test.pl /^package Bar;$/ - Bar::f4 perl-src/kai-test.pl /^sub Bar::f4 {$/ - Bar::f5 perl-src/kai-test.pl /^sub f5 {$/ +Barrier_Function_Pointer/t ada-src/etags-test-for.ada /^ type Barrier_Function_Pointer is access$/ +Bidule/b ada-src/etags-test-for.ada /^ protected body Bidule is$/ +Bidule/b ada-src/waroquiers.ada /^ protected body Bidule is$/ +Bidule/t ada-src/etags-test-for.ada /^ protected Bidule is$/ +Bidule/t ada-src/waroquiers.ada /^ protected Bidule is$/ +Body_Required/f ada-src/etags-test-for.ada /^ function Body_Required$/ +Boo cp-src/c.C 129 +Boo cp-src/c.C /^ Boo(int _i, int _a, int _b) : i(_i), a(_a), b(/ +Boo::Boo cp-src/c.C /^Boo::Boo(Boo) :$/ +ButtonBar pyt-src/server.py /^def ButtonBar(frame, legend, ref, alternatives, co/ +C cp-src/fail.C 9 +C cp-src/fail.C /^ C(int i) {x = i;}$/ +C cp-src/fail.C 25 +CALLMANY c-src/emacs/src/lisp.h /^#define CALLMANY(f, array) (f) (ARRAYELTS (array),/ +CALLN c-src/emacs/src/lisp.h /^#define CALLN(f, ...) CALLMANY (f, ((Lisp_Object [/ +CAR c-src/emacs/src/lisp.h /^CAR (Lisp_Object c)$/ +CAR_SAFE c-src/emacs/src/lisp.h /^CAR_SAFE (Lisp_Object c)$/ +CATCHER c-src/emacs/src/lisp.h 3021 +CDR c-src/emacs/src/lisp.h /^CDR (Lisp_Object c)$/ +CDR_SAFE c-src/emacs/src/lisp.h /^CDR_SAFE (Lisp_Object c)$/ +CFLAGS make-src/Makefile /^CFLAGS=${WARNINGS} -ansi -g3 # -pg -O$/ +CHAR c-src/etags.c /^#define CHAR(x) ((unsigned int)(x) & (CHARS - 1))/ +CHAR y-src/cccp.c 7 +CHARACTERBITS c-src/emacs/src/lisp.h 2457 +CHARS c-src/etags.c 157 +CHARTAB_SIZE_BITS c-src/emacs/src/lisp.h 1565 +CHARTAB_SIZE_BITS_0 c-src/emacs/src/lisp.h 1567 +CHARTAB_SIZE_BITS_1 c-src/emacs/src/lisp.h 1568 +CHARTAB_SIZE_BITS_2 c-src/emacs/src/lisp.h 1569 +CHARTAB_SIZE_BITS_3 c-src/emacs/src/lisp.h 1570 +CHAR_ALT c-src/emacs/src/lisp.h 2445 +CHAR_CLASS_MAX_LENGTH c-src/emacs/src/regex.h 593 +CHAR_CLASS_MAX_LENGTH c-src/emacs/src/regex.h 597 +CHAR_CLASS_MAX_LENGTH c-src/emacs/src/regex.h 605 +CHAR_CTL c-src/emacs/src/lisp.h 2449 +CHAR_HYPER c-src/emacs/src/lisp.h 2447 +CHAR_META c-src/emacs/src/lisp.h 2450 +CHAR_MODIFIER_MASK c-src/emacs/src/lisp.h 2452 +CHAR_SHIFT c-src/emacs/src/lisp.h 2448 +CHAR_SUPER c-src/emacs/src/lisp.h 2446 +CHAR_TABLE_EXTRA_SLOTS c-src/emacs/src/lisp.h /^CHAR_TABLE_EXTRA_SLOTS (struct Lisp_Char_Table *ct/ +CHAR_TABLE_P c-src/emacs/src/lisp.h /^CHAR_TABLE_P (Lisp_Object a)$/ +CHAR_TABLE_REF c-src/emacs/src/lisp.h /^CHAR_TABLE_REF (Lisp_Object ct, int idx)$/ +CHAR_TABLE_REF_ASCII c-src/emacs/src/lisp.h /^CHAR_TABLE_REF_ASCII (Lisp_Object ct, ptrdiff_t id/ +CHAR_TABLE_SET c-src/emacs/src/lisp.h /^CHAR_TABLE_SET (Lisp_Object ct, int idx, Lisp_Obje/ +CHAR_TABLE_STANDARD_SLOTS c-src/emacs/src/lisp.h 1697 +CHAR_TYPE_SIZE cccp.y 87 +CHAR_TYPE_SIZE y-src/cccp.y 87 +CHECKFLAGS make-src/Makefile /^CHECKFLAGS=-DDEBUG -Wno-unused-function$/ +CHECKOBJS make-src/Makefile /^CHECKOBJS=chkmalloc.o chkxm.o$/ +CHECK_ARRAY c-src/emacs/src/lisp.h /^CHECK_ARRAY (Lisp_Object x, Lisp_Object predicate)/ +CHECK_BOOL_VECTOR c-src/emacs/src/lisp.h /^CHECK_BOOL_VECTOR (Lisp_Object x)$/ +CHECK_BUFFER c-src/emacs/src/lisp.h /^CHECK_BUFFER (Lisp_Object x)$/ +CHECK_CONS c-src/emacs/src/lisp.h /^CHECK_CONS (Lisp_Object x)$/ +CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 571 +CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 572 +CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 572 +CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 579 +CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 579 +CHECK_LIST c-src/emacs/src/lisp.h /^CHECK_LIST (Lisp_Object x)$/ +CHECK_LIST_CONS c-src/emacs/src/lisp.h /^# define CHECK_LIST_CONS(x, y) lisp_h_CHECK_LIST_C/ +CHECK_NATNUM c-src/emacs/src/lisp.h /^CHECK_NATNUM (Lisp_Object x)$/ +CHECK_NUMBER c-src/emacs/src/lisp.h /^# define CHECK_NUMBER(x) lisp_h_CHECK_NUMBER (x)$/ +CHECK_NUMBER_CAR c-src/emacs/src/lisp.h /^CHECK_NUMBER_CAR (Lisp_Object x)$/ +CHECK_NUMBER_CDR c-src/emacs/src/lisp.h /^CHECK_NUMBER_CDR (Lisp_Object x)$/ +CHECK_NUMBER_COERCE_MARKER c-src/emacs/src/lisp.h /^#define CHECK_NUMBER_COERCE_MARKER(x) \\$/ +CHECK_NUMBER_OR_FLOAT c-src/emacs/src/lisp.h /^CHECK_NUMBER_OR_FLOAT (Lisp_Object x)$/ +CHECK_NUMBER_OR_FLOAT_COERCE_MARKER c-src/emacs/src/lisp.h /^#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(x) / +CHECK_PROCESS c-src/emacs/src/lisp.h /^CHECK_PROCESS (Lisp_Object x)$/ +CHECK_RANGED_INTEGER c-src/emacs/src/lisp.h /^#define CHECK_RANGED_INTEGER(x, lo, hi) \\$/ +CHECK_STRING_CAR c-src/emacs/src/lisp.h /^CHECK_STRING_CAR (Lisp_Object x)$/ +CHECK_SYMBOL c-src/emacs/src/lisp.h /^# define CHECK_SYMBOL(x) lisp_h_CHECK_SYMBOL (x)$/ +CHECK_TYPE c-src/emacs/src/lisp.h /^# define CHECK_TYPE(ok, predicate, x) lisp_h_CHECK/ +CHECK_TYPE_RANGED_INTEGER c-src/emacs/src/lisp.h /^#define CHECK_TYPE_RANGED_INTEGER(type, x) \\$/ +CHECK_VECTOR c-src/emacs/src/lisp.h /^CHECK_VECTOR (Lisp_Object x)$/ +CHECK_VECTOR_OR_STRING c-src/emacs/src/lisp.h /^CHECK_VECTOR_OR_STRING (Lisp_Object x)$/ +CHECK_WINDOW c-src/emacs/src/lisp.h /^CHECK_WINDOW (Lisp_Object x)$/ +CK_ABS_C y-src/parse.y /^#define CK_ABS_C(x) if((x)MAX_COL)/ +CK_ABS_C parse.y /^#define CK_ABS_C(x) if((x)MAX_COL)/ +CK_ABS_R y-src/parse.y /^#define CK_ABS_R(x) if((x)MAX_ROW)/ +CK_ABS_R parse.y /^#define CK_ABS_R(x) if((x)MAX_ROW)/ +CK_REL_C y-src/parse.y /^#define CK_REL_C(x) if( ((x)>0 && MAX_COL-(x)0 && MAX_COL-(x)0 && MAX_ROW-(x)0 && MAX_ROW-(x)/ +MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (void) : DiagArray2 () { }$/ +MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (int r, int c) : DiagArray2 (r, c/ +MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (int r, int c, const T& val) : DiagA/ +MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (const Array& a) : DiagArray2 / +MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (const DiagArray2& a) : DiagArray/ +MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (const MDiagArray2& a) : DiagArra/ +MIN_HASH_VALUE c-src/etags.c 2328 +MIN_WORD_LENGTH c-src/etags.c 2326 +MISCP c-src/emacs/src/lisp.h /^# define MISCP(x) lisp_h_MISCP (x)$/ +MOST_NEGATIVE_FIXNUM c-src/emacs/src/lisp.h 835 +MOST_POSITIVE_FIXNUM c-src/emacs/src/lisp.h 834 +MOVE c-src/sysdep.h /^#define MOVE(x,y) movl x, y$/ +MSDOS c-src/etags.c 100 +MSDOS c-src/etags.c 106 +MSDOS c-src/etags.c 107 +MSDOS c-src/etags.c 110 +MSGSEL f-src/entry.for /^ ENTRY MSGSEL ( TYPE )$/ +MSGSEL f-src/entry.strange_suffix /^ ENTRY MSGSEL ( TYPE )$/ +MSGSEL f-src/entry.strange /^ ENTRY MSGSEL ( TYPE )$/ +MULTI_LETTER_MOD c-src/emacs/src/keyboard.c /^#define MULTI_LETTER_MOD(BIT, NAME, LEN) \\$/ +MULTI_LETTER_MOD c-src/emacs/src/keyboard.c 6231 +MULTI_LETTER_MOD c-src/emacs/src/keyboard.c /^#define MULTI_LETTER_MOD(BIT, NAME, LEN) \\$/ +MULTI_LETTER_MOD c-src/emacs/src/keyboard.c 6764 +Machin_T/b ada-src/waroquiers.ada /^ protected body Machin_T is$/ +Machin_T/t ada-src/etags-test-for.ada /^ protected type Machin_T is$/ +Machin_T/t ada-src/etags-test-for.ada /^ protected Machin_T is$/ +Machin_T/t ada-src/waroquiers.ada /^ protected type Machin_T is$/ +Machine_Exceptions/t ada-src/2ataspri.ads /^ type Machine_Exceptions is new Interfaces.C.POS/ +MakeDispose pyt-src/server.py /^ def MakeDispose(self):$/ +MakeSitelist pyt-src/server.py /^ def MakeSitelist(self, master):$/ +Makefile_filenames c-src/etags.c 603 +Makefile_help c-src/etags.c 605 +Makefile_targets c-src/etags.c /^Makefile_targets (FILE *inf)$/ +Mc cp-src/c.C /^int main (void) { my_function0(0); my_function1(1)/ +Mcccp cccp.y /^main ()$/ +Mcccp y-src/cccp.y /^main ()$/ +Mconway.cpp cp-src/conway.cpp /^void main(void)$/ +Metags c-src/etags.c /^main (int argc, char **argv)$/ +Mfail cp-src/fail.C /^main()$/ +Mkai-test.pl perl-src/kai-test.pl /^package main;$/ +ModuleExample ruby-src/test.rb /^module ModuleExample$/ +More_Lisp_Bits c-src/emacs/src/lisp.h 801 +MoveLayerAfter lua-src/allegro.lua /^function MoveLayerAfter (this_one)$/ +MoveLayerBefore lua-src/allegro.lua /^function MoveLayerBefore (this_one)$/ +MoveLayerBottom lua-src/allegro.lua /^function MoveLayerBottom ()$/ +MoveLayerTop lua-src/allegro.lua /^function MoveLayerTop ()$/ +Mtest.go go-src/test.go 1 +Mtest.go go-src/test.go /^func main() {$/ +Mtest1.go go-src/test1.go 1 +Mtest1.go go-src/test1.go /^func main() {$/ +Mx.cc cp-src/x.cc /^main(int argc, char *argv[])$/ +NAME y-src/cccp.c 8 +NATNUMP c-src/emacs/src/lisp.h /^NATNUMP (Lisp_Object x)$/ +NDEBUG c-src/etags.c 88 +NE y-src/parse.c 6 +NEG y-src/parse.c 9 +NEXT_ALMOST_PRIME_LIMIT c-src/emacs/src/lisp.h 3573 +NILP c-src/emacs/src/lisp.h /^# define NILP(x) lisp_h_NILP (x)$/ +NIL_IS_ZERO c-src/emacs/src/lisp.h 1515 +NONPOINTER_BITS c-src/emacs/src/lisp.h 78 +NONPOINTER_BITS c-src/emacs/src/lisp.h 80 +NONSRCS make-src/Makefile /^NONSRCS=entry.strange lists.erl clheir.hpp.gz$/ +NOTEQUAL y-src/cccp.c 13 +NULL cccp.y 51 +NULL y-src/cccp.y 51 +NULL_PTR cccp.y 63 +NULL_PTR y-src/cccp.y 63 +NUMSTATS objc-src/PackInsp.h 36 +NUM_MOD_NAMES c-src/emacs/src/keyboard.c 6325 +NUM_RECENT_KEYS c-src/emacs/src/keyboard.c 91 +NameHasChar pas-src/common.pas /^function NameHasChar; (* (TheName : NameString; Th/ +NameStringLess pas-src/common.pas /^function NameStringLess;(*(var Name1,Name2 : NameS/ +NewLayer lua-src/allegro.lua /^function NewLayer (name, x, y, w, h)$/ +NewLayerSet lua-src/allegro.lua /^function NewLayerSet (name)$/ +NewNameString pas-src/common.pas /^procedure NewNameString; (* (var NSP: NameStringPo/ +NmStrToErrStr pas-src/common.pas /^function NmStrToErrStr;(*($/ +NmStrToInteger pas-src/common.pas /^function NmStrToInteger; (* (Str : NameString) : i/ +OBJCPPSRC make-src/Makefile /^OBJCPPSRC=SimpleCalc.H SimpleCalc.M$/ +OBJCSRC make-src/Makefile /^OBJCSRC=Subprocess.h Subprocess.m PackInsp.h PackI/ +OBJS make-src/Makefile /^OBJS=${GETOPTOBJS} ${REGEXOBJS} ${CHECKOBJS}$/ +OPENBUTTON objc-src/PackInsp.m 47 +OPTIONS make-src/Makefile /^OPTIONS=--members --declarations --regex=@regexfil/ +OR y-src/cccp.c 10 +OTAGS make-src/Makefile /^OTAGS: oetags ${SRCS} srclist$/ +OVERLAYP c-src/emacs/src/lisp.h /^OVERLAYP (Lisp_Object x)$/ +Objc_help c-src/etags.c 613 +Objc_suffixes c-src/etags.c 609 +OperatorFun c-src/h.h 88 +Overview tex-src/gzip.texi /^@node Overview, Sample, Copying, Top$/ +PASSRC make-src/Makefile /^PASSRC=common.pas$/ +PDT c-src/h.h /^ Date 04 May 87 235311 PDT (Mon)$/ +PERLSRC make-src/Makefile /^PERLSRC=htlmify-cystic yagrip.pl kai-test.pl mirro/ +PHPSRC make-src/Makefile /^PHPSRC=lce_functions.php ptest.php sendmail.php$/ +PHP_functions c-src/etags.c /^PHP_functions (FILE *inf)$/ +PHP_help c-src/etags.c 639 +PHP_suffixes c-src/etags.c 637 +POEntry php-src/lce_functions.php 105 +POEntry php-src/lce_functions.php /^ function POEntry()$/ +POEntryAD php-src/lce_functions.php 29 +PORManager php-src/lce_functions.php 498 +PORManager php-src/lce_functions.php /^ function PORManager()$/ +POReader php-src/lce_functions.php 163 +POReader php-src/lce_functions.php /^ function POReader($domain, $filename)$/ +POSTSCRIPTFLAGS make-src/Makefile /^POSTSCRIPTFLAGS=--language=none --regex='#\/[^ \\t{]/ +PRINT_UNDOCUMENTED_OPTIONS_HELP c-src/etags.c 804 +PROCESSP c-src/emacs/src/lisp.h /^PROCESSP (Lisp_Object a)$/ +PROLSRC make-src/Makefile /^PROLSRC=ordsets.prolog natded.prolog$/ +PROP c-src/emacs/src/keyboard.c /^#define PROP(IDX) AREF (tool_bar_item_properties, / +PROP c-src/emacs/src/keyboard.c 8379 +PROTECT_MALLOC_STATE c-src/emacs/src/gmalloc.c /^#define PROTECT_MALLOC_STATE(PROT) protect_malloc_/ +PROTECT_MALLOC_STATE c-src/emacs/src/gmalloc.c /^#define PROTECT_MALLOC_STATE(PROT) \/* empty *\/$/ +PRTPKG f-src/entry.for /^ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/ +PRTPKG f-src/entry.strange_suffix /^ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/ +PRTPKG f-src/entry.strange /^ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/ +PSEUDO c-src/sysdep.h /^#define PSEUDO(name, syscall_name, args) / +PSEUDOVECSIZE c-src/emacs/src/lisp.h /^#define PSEUDOVECSIZE(type, nonlispfield) \\$/ +PSEUDOVECTORP c-src/emacs/src/lisp.h /^PSEUDOVECTORP (Lisp_Object a, int code)$/ +PSEUDOVECTOR_AREA_BITS c-src/emacs/src/lisp.h 818 +PSEUDOVECTOR_FLAG c-src/emacs/src/lisp.h 774 +PSEUDOVECTOR_REST_BITS c-src/emacs/src/lisp.h 813 +PSEUDOVECTOR_REST_MASK c-src/emacs/src/lisp.h 814 +PSEUDOVECTOR_SIZE_BITS c-src/emacs/src/lisp.h 808 +PSEUDOVECTOR_SIZE_MASK c-src/emacs/src/lisp.h 809 +PSEUDOVECTOR_TYPEP c-src/emacs/src/lisp.h /^PSEUDOVECTOR_TYPEP (struct vectorlike_header *a, i/ +PSSRC make-src/Makefile /^PSSRC=rfc1245.ps$/ +PS_functions c-src/etags.c /^PS_functions (FILE *inf)$/ +PS_help c-src/etags.c 649 +PS_suffixes c-src/etags.c 647 +PTY_LENGTH objc-src/Subprocess.m 21 +PTY_TEMPLATE objc-src/Subprocess.m 20 +PUSH_C_STR c-src/emacs/src/keyboard.c /^#define PUSH_C_STR(str, listvar) \\$/ +PUSH_HANDLER c-src/emacs/src/lisp.h /^#define PUSH_HANDLER(c, tag_ch_val, handlertype) \\/ +PVEC_BOOL_VECTOR c-src/emacs/src/lisp.h 787 +PVEC_BUFFER c-src/emacs/src/lisp.h 788 +PVEC_CHAR_TABLE c-src/emacs/src/lisp.h 796 +PVEC_COMPILED c-src/emacs/src/lisp.h 795 +PVEC_FONT c-src/emacs/src/lisp.h 798 +PVEC_FRAME c-src/emacs/src/lisp.h 785 +PVEC_FREE c-src/emacs/src/lisp.h 783 +PVEC_HASH_TABLE c-src/emacs/src/lisp.h 789 +PVEC_NORMAL_VECTOR c-src/emacs/src/lisp.h 782 +PVEC_OTHER c-src/emacs/src/lisp.h 793 +PVEC_PROCESS c-src/emacs/src/lisp.h 784 +PVEC_SUBR c-src/emacs/src/lisp.h 792 +PVEC_SUB_CHAR_TABLE c-src/emacs/src/lisp.h 797 +PVEC_TERMINAL c-src/emacs/src/lisp.h 790 +PVEC_TYPE_MASK c-src/emacs/src/lisp.h 819 +PVEC_WINDOW c-src/emacs/src/lisp.h 786 +PVEC_WINDOW_CONFIGURATION c-src/emacs/src/lisp.h 791 +PYTSRC make-src/Makefile /^PYTSRC=server.py$/ +PackageInspector objc-src/PackInsp.h /^@interface PackageInspector:WMInspector$/ +Pascal_functions c-src/etags.c /^Pascal_functions (FILE *inf)$/ +Pascal_help c-src/etags.c 621 +Pascal_suffixes c-src/etags.c 619 +Perl_functions c-src/etags.c /^Perl_functions (FILE *inf)$/ +Perl_help c-src/etags.c 630 +Perl_interpreters c-src/etags.c 628 +Perl_suffixes c-src/etags.c 626 +Pkg1/b ada-src/etags-test-for.ada /^package body Pkg1 is$/ +Pkg1/b ada-src/waroquiers.ada /^package body Pkg1 is$/ +Pkg1/s ada-src/etags-test-for.ada /^package Pkg1 is$/ +Pkg1/s ada-src/waroquiers.ada /^package Pkg1 is$/ +Pkg1_Func1/f ada-src/etags-test-for.ada /^ function Pkg1_Func1 return Boolean;$/ +Pkg1_Func1/f ada-src/etags-test-for.ada /^ function Pkg1_Func1 return Boolean is separate;$/ +Pkg1_Func1/f ada-src/etags-test-for.ada /^function Pkg1_Func1 return Boolean is$/ +Pkg1_Func1/f ada-src/waroquiers.ada /^ function Pkg1_Func1 return Boolean;$/ +Pkg1_Func1/f ada-src/waroquiers.ada /^ function Pkg1_Func1 return Boolean is separate;$/ +Pkg1_Func1/f ada-src/waroquiers.ada /^function Pkg1_Func1 return Boolean is$/ +Pkg1_Func2/f ada-src/etags-test-for.ada /^ function Pkg1_Func2 (Ijk : Integer; Z : Integer)/ +Pkg1_Func2/f ada-src/etags-test-for.ada /^ function Pkg1_Func2 (Ijk : Integer; Z : Integer)/ +Pkg1_Func2/f ada-src/waroquiers.ada /^ function Pkg1_Func2 (Ijk : Integer; Z : Integer)/ +Pkg1_Func2/f ada-src/waroquiers.ada /^ function Pkg1_Func2 (Ijk : Integer; Z : Integer)/ +Pkg1_Pkg1/b ada-src/etags-test-for.ada /^ package body Pkg1_Pkg1 is separate;$/ +Pkg1_Pkg1/b ada-src/etags-test-for.ada /^package body Pkg1_Pkg1 is$/ +Pkg1_Pkg1/b ada-src/waroquiers.ada /^ package body Pkg1_Pkg1 is separate;$/ +Pkg1_Pkg1/b ada-src/waroquiers.ada /^package body Pkg1_Pkg1 is$/ +Pkg1_Pkg1/s ada-src/etags-test-for.ada /^ package Pkg1_Pkg1 is$/ +Pkg1_Pkg1/s ada-src/waroquiers.ada /^ package Pkg1_Pkg1 is$/ +Pkg1_Pkg1_Proc1/p ada-src/etags-test-for.ada /^ procedure Pkg1_Pkg1_Proc1;$/ +Pkg1_Pkg1_Proc1/p ada-src/etags-test-for.ada /^ procedure Pkg1_Pkg1_Proc1 is$/ +Pkg1_Pkg1_Proc1/p ada-src/waroquiers.ada /^ procedure Pkg1_Pkg1_Proc1;$/ +Pkg1_Pkg1_Proc1/p ada-src/waroquiers.ada /^ procedure Pkg1_Pkg1_Proc1 is$/ +Pkg1_Proc1/p ada-src/etags-test-for.ada /^ procedure Pkg1_Proc1;$/ +Pkg1_Proc1/p ada-src/etags-test-for.ada /^ procedure Pkg1_Proc1 is$/ +Pkg1_Proc1/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc1;$/ +Pkg1_Proc1/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc1 is$/ +Pkg1_Proc2/p ada-src/etags-test-for.ada /^ procedure Pkg1_Proc2 (I : Integer);$/ +Pkg1_Proc2/p ada-src/etags-test-for.ada /^ procedure Pkg1_Proc2 (I : Integer) is$/ +Pkg1_Proc2/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc2 (I : Integer);$/ +Pkg1_Proc2/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc2 (I : Integer) is$/ +PostControls pyt-src/server.py /^ def PostControls(self):$/ +Pre_Call_State/t ada-src/2ataspri.ads /^ type Pre_Call_State is new System.Address;$/ +PrintAdd go-src/test1.go /^func (s str) PrintAdd() {$/ +PrintAdd go-src/test1.go /^func (n intNumber) PrintAdd() {$/ +Private objc-src/Subprocess.m /^@interface Subprocess(Private)$/ +Private_T/b ada-src/etags-test-for.ada /^ task body Private_T is$/ +Private_T/b ada-src/waroquiers.ada /^ task body Private_T is$/ +Private_T/k ada-src/etags-test-for.ada /^ task Private_T;$/ +Private_T/k ada-src/waroquiers.ada /^ task Private_T;$/ +Private_T/p ada-src/etags-test-for.ada /^ procedure Private_T;$/ +Private_T/p ada-src/etags-test-for.ada /^ procedure Private_T is$/ +Private_T/p ada-src/waroquiers.ada /^ procedure Private_T;$/ +Private_T/p ada-src/waroquiers.ada /^ procedure Private_T is$/ +Private_T/t ada-src/etags-test-for.ada /^ type Private_T is private;$/ +Private_T/t ada-src/etags-test-for.ada /^ type Private_T is$/ +Private_T/t ada-src/waroquiers.ada /^ type Private_T is private;$/ +Private_T/t ada-src/waroquiers.ada /^ type Private_T is$/ +Problems tex-src/gzip.texi /^@node Problems, Concept Index, Tapes, Top$/ +Proc/t ada-src/2ataspri.ads /^ type Proc is access procedure (Addr : System.Ad/ +Prolog_functions c-src/etags.c /^Prolog_functions (FILE *inf)$/ +Prolog_help c-src/etags.c 654 +Prolog_suffixes c-src/etags.c 652 +Public_T/t ada-src/etags-test-for.ada /^ type Public_T is$/ +Public_T/t ada-src/waroquiers.ada /^ type Public_T is$/ +Python_functions c-src/etags.c /^Python_functions (FILE *inf)$/ +Python_help c-src/etags.c 660 +Python_suffixes c-src/etags.c 658 +QUIT c-src/emacs/src/lisp.h 3101 +QUITP c-src/emacs/src/lisp.h 3112 +Qpre_abbrev_expand_hook c-src/abbrev.c 83 +RANGED_INTEGERP c-src/emacs/src/lisp.h /^RANGED_INTEGERP (intmax_t lo, Lisp_Object x, intma/ +RCSid objc-src/PackInsp.m 30 +READABLE_EVENTS_DO_TIMERS_NOW c-src/emacs/src/keyboard.c 346 +READABLE_EVENTS_FILTER_EVENTS c-src/emacs/src/keyboard.c 347 +READABLE_EVENTS_IGNORE_SQUEEZABLES c-src/emacs/src/keyboard.c 348 +RECC_ALNUM c-src/emacs/src/regex.h 610 +RECC_ALPHA c-src/emacs/src/regex.h 610 +RECC_ASCII c-src/emacs/src/regex.h 617 +RECC_BLANK c-src/emacs/src/regex.h 615 +RECC_CNTRL c-src/emacs/src/regex.h 613 +RECC_DIGIT c-src/emacs/src/regex.h 614 +RECC_ERROR c-src/emacs/src/regex.h 609 +RECC_GRAPH c-src/emacs/src/regex.h 611 +RECC_LOWER c-src/emacs/src/regex.h 612 +RECC_MULTIBYTE c-src/emacs/src/regex.h 616 +RECC_NONASCII c-src/emacs/src/regex.h 616 +RECC_PRINT c-src/emacs/src/regex.h 611 +RECC_PUNCT c-src/emacs/src/regex.h 613 +RECC_SPACE c-src/emacs/src/regex.h 615 +RECC_UNIBYTE c-src/emacs/src/regex.h 617 +RECC_UPPER c-src/emacs/src/regex.h 612 +RECC_WORD c-src/emacs/src/regex.h 610 +RECC_XDIGIT c-src/emacs/src/regex.h 614 +RED cp-src/screen.hpp 16 +REGEX make-src/Makefile /^REGEX=\/[ \\t]*DEFVAR_[A-Z_ \\t\\n(]+"\\([^"]+\\)"\/$/ +REGEXOBJS make-src/Makefile /^REGEXOBJS=regex.o$/ +REGS_FIXED c-src/emacs/src/regex.h 378 +REGS_REALLOCATE c-src/emacs/src/regex.h 377 +REGS_UNALLOCATED c-src/emacs/src/regex.h 376 +REG_BADBR c-src/emacs/src/regex.h 313 +REG_BADPAT c-src/emacs/src/regex.h 305 +REG_BADRPT c-src/emacs/src/regex.h 316 +REG_EBRACE c-src/emacs/src/regex.h 312 +REG_EBRACK c-src/emacs/src/regex.h 310 +REG_ECOLLATE c-src/emacs/src/regex.h 306 +REG_ECTYPE c-src/emacs/src/regex.h 307 +REG_EEND c-src/emacs/src/regex.h 319 +REG_EESCAPE c-src/emacs/src/regex.h 308 +REG_ENOSYS c.c 279 +REG_ENOSYS c-src/emacs/src/regex.h 297 +REG_EPAREN c-src/emacs/src/regex.h 311 +REG_ERANGE c-src/emacs/src/regex.h 314 +REG_ERANGEX c-src/emacs/src/regex.h 322 +REG_ERPAREN c-src/emacs/src/regex.h 321 +REG_ESIZE c-src/emacs/src/regex.h 320 +REG_ESPACE c-src/emacs/src/regex.h 315 +REG_ESUBREG c-src/emacs/src/regex.h 309 +REG_EXTENDED c-src/emacs/src/regex.h 263 +REG_ICASE c-src/emacs/src/regex.h 267 +REG_NEWLINE c-src/emacs/src/regex.h 272 +REG_NOERROR c-src/emacs/src/regex.h 300 +REG_NOMATCH c-src/emacs/src/regex.h 301 +REG_NOSUB c-src/emacs/src/regex.h 276 +REG_NOTBOL c-src/emacs/src/regex.h 286 +REG_NOTEOL c-src/emacs/src/regex.h 289 +RELEASELIST make-src/Makefile /^RELEASELIST=pot@gnu.org xemacs-review@xemacs.org j/ +RESUME_POLLING c-src/emacs/src/keyboard.c 2170 +RETURN_UNGCPRO c-src/emacs/src/lisp.h /^#define RETURN_UNGCPRO(expr) \\$/ +RE_BACKSLASH_ESCAPE_IN_LISTS c-src/emacs/src/regex.h 47 +RE_BK_PLUS_QM c-src/emacs/src/regex.h 52 +RE_CHAR_CLASSES c-src/emacs/src/regex.h 58 +RE_CONTEXT_INDEP_ANCHORS c-src/emacs/src/regex.h 72 +RE_CONTEXT_INDEP_OPS c-src/emacs/src/regex.h 80 +RE_CONTEXT_INVALID_OPS c-src/emacs/src/regex.h 84 +RE_DEBUG c-src/emacs/src/regex.h 161 +RE_DOT_NEWLINE c-src/emacs/src/regex.h 88 +RE_DOT_NOT_NULL c-src/emacs/src/regex.h 92 +RE_DUP_MAX c-src/emacs/src/regex.h 253 +RE_DUP_MAX c-src/emacs/src/regex.h 256 +RE_FRUGAL c-src/emacs/src/regex.h 147 +RE_HAT_LISTS_NOT_NEWLINE c-src/emacs/src/regex.h 96 +RE_INTERVALS c-src/emacs/src/regex.h 101 +RE_LIMITED_OPS c-src/emacs/src/regex.h 105 +RE_NEWLINE_ALT c-src/emacs/src/regex.h 109 +RE_NO_BK_BRACES c-src/emacs/src/regex.h 114 +RE_NO_BK_PARENS c-src/emacs/src/regex.h 118 +RE_NO_BK_REFS c-src/emacs/src/regex.h 122 +RE_NO_BK_VBAR c-src/emacs/src/regex.h 126 +RE_NO_EMPTY_RANGES c-src/emacs/src/regex.h 132 +RE_NO_GNU_OPS c-src/emacs/src/regex.h 144 +RE_NO_NEWLINE_ANCHOR c-src/emacs/src/regex.h 153 +RE_NO_POSIX_BACKTRACKING c-src/emacs/src/regex.h 140 +RE_NREGS c-src/emacs/src/regex.h 440 +RE_SHY_GROUPS c-src/emacs/src/regex.h 150 +RE_SYNTAX_AWK c-src/emacs/src/regex.h 186 +RE_SYNTAX_ED c-src/emacs/src/regex.h 216 +RE_SYNTAX_EGREP c-src/emacs/src/regex.h 206 +RE_SYNTAX_EMACS c-src/emacs/src/regex.h 183 +RE_SYNTAX_GNU_AWK c-src/emacs/src/regex.h 193 +RE_SYNTAX_GREP c-src/emacs/src/regex.h 201 +RE_SYNTAX_POSIX_AWK c-src/emacs/src/regex.h 197 +RE_SYNTAX_POSIX_BASIC c-src/emacs/src/regex.h 225 +RE_SYNTAX_POSIX_EGREP c-src/emacs/src/regex.h 212 +RE_SYNTAX_POSIX_EXTENDED c-src/emacs/src/regex.h 234 +RE_SYNTAX_POSIX_MINIMAL_BASIC c-src/emacs/src/regex.h 231 +RE_SYNTAX_POSIX_MINIMAL_EXTENDED c-src/emacs/src/regex.h 242 +RE_SYNTAX_SED c-src/emacs/src/regex.h 218 +RE_TRANSLATE_TYPE c-src/emacs/src/regex.h 332 +RE_UNMATCHED_RIGHT_PAREN_ORD c-src/emacs/src/regex.h 136 +RSH y-src/cccp.c 17 +RTE/s ada-src/2ataspri.adb /^ package RTE renames Interfaces.C.POSIX_RTE;$/ +RUN make-src/Makefile /^RUN=time --quiet --format '%U + %S: %E'$/ +RUN make-src/Makefile /^RUN=$/ +RXINCLUDE make-src/Makefile /^RXINCLUDE=-Iemacs\/src$/ +Range cp-src/Range.h 35 +Range cp-src/Range.h /^ Range (void)$/ +Range cp-src/Range.h /^ Range (const Range& r)$/ +Range cp-src/Range.h /^ Range (double b, double l)$/ +Range cp-src/Range.h /^ Range (double b, double l, double i)$/ +ReadVacation cp-src/functions.cpp /^void ReadVacation ( char *filename ) {$/ +Read_Lock/p ada-src/2ataspri.adb /^ procedure Read_Lock (L : in out Lock; Ceiling_V/ +Read_Lock/p ada-src/2ataspri.ads /^ procedure Read_Lock (L : in out Lock; Ceiling_V/ +Rectangle.getPos lua-src/test.lua /^function Rectangle.getPos ()$/ +ReleaseNameString pas-src/common.pas /^procedure ReleaseNameString; (* (var NSP: NameStri/ +RemoveLayer lua-src/allegro.lua /^function RemoveLayer ()$/ +RemoveUnderlineControl pas-src/common.pas /^function RemoveUnderlineControl; (*($/ +ReprOfChar pas-src/common.pas /^function ReprOfChar; (*( ch : char) : NameString;*/ +S c.c 156 +SAFE_ALLOCA c-src/emacs/src/lisp.h /^#define SAFE_ALLOCA(size) ((size) <= sa_avail \\/ +SAFE_ALLOCA_LISP c-src/emacs/src/lisp.h /^#define SAFE_ALLOCA_LISP(buf, nelt) \\$/ +SAFE_ALLOCA_STRING c-src/emacs/src/lisp.h /^#define SAFE_ALLOCA_STRING(ptr, string) \\$/ +SAFE_FREE c-src/emacs/src/lisp.h /^#define SAFE_FREE() \\$/ +SAFE_NALLOCA c-src/emacs/src/lisp.h /^#define SAFE_NALLOCA(buf, multiplier, nitems) \\/ +SAVE_FUNCPOINTER c-src/emacs/src/lisp.h 2049 +SAVE_INTEGER c-src/emacs/src/lisp.h 2048 +SAVE_OBJECT c-src/emacs/src/lisp.h 2051 +SAVE_POINTER c-src/emacs/src/lisp.h 2050 +SAVE_SLOT_BITS c-src/emacs/src/lisp.h 2055 +SAVE_TYPE_BITS c-src/emacs/src/lisp.h 2062 +SAVE_TYPE_FUNCPTR_PTR_OBJ c-src/emacs/src/lisp.h 2076 +SAVE_TYPE_INT_INT c-src/emacs/src/lisp.h 2066 +SAVE_TYPE_INT_INT_INT c-src/emacs/src/lisp.h 2067 +SAVE_TYPE_MEMORY c-src/emacs/src/lisp.h 2080 +SAVE_TYPE_OBJ_OBJ c-src/emacs/src/lisp.h 2069 +SAVE_TYPE_OBJ_OBJ_OBJ c-src/emacs/src/lisp.h 2070 +SAVE_TYPE_OBJ_OBJ_OBJ_OBJ c-src/emacs/src/lisp.h 2071 +SAVE_TYPE_PTR_INT c-src/emacs/src/lisp.h 2073 +SAVE_TYPE_PTR_OBJ c-src/emacs/src/lisp.h 2074 +SAVE_TYPE_PTR_PTR c-src/emacs/src/lisp.h 2075 +SAVE_UNUSED c-src/emacs/src/lisp.h 2047 +SAVE_VALUEP c-src/emacs/src/lisp.h /^SAVE_VALUEP (Lisp_Object x)$/ +SAVE_VALUE_SLOTS c-src/emacs/src/lisp.h 2058 +SBYTES c-src/emacs/src/lisp.h /^SBYTES (Lisp_Object string)$/ +SCHARS c-src/emacs/src/lisp.h /^SCHARS (Lisp_Object string)$/ +SCREEN_FP cp-src/screen.hpp /^#define SCREEN_FP(x,y) \\$/ +SCREEN_START cp-src/screen.hpp 33 +SDATA c-src/emacs/src/lisp.h /^SDATA (Lisp_Object string)$/ +SDTrefGetInteger pas-src/common.pas /^function SDTrefGetInteger : integer;$/ +SDTrefIsEnd pas-src/common.pas /^function SDTrefIsEnd : Boolean;$/ +SDTrefRecToString pas-src/common.pas /^procedure SDTrefRecToString (* ($/ +SDTrefSkipSpaces pas-src/common.pas /^procedure SDTrefSkipSpaces;$/ +SDTrefStringToRec pas-src/common.pas /^procedure SDTrefStringToRec (* ($/ +SETPRT f-src/entry.for /^ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, D/ +SETPRT f-src/entry.strange_suffix /^ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, D/ +SETPRT f-src/entry.strange /^ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, D/ +SET_SYMBOL_BLV c-src/emacs/src/lisp.h /^SET_SYMBOL_BLV (struct Lisp_Symbol *sym, struct Li/ +SET_SYMBOL_FWD c-src/emacs/src/lisp.h /^SET_SYMBOL_FWD (struct Lisp_Symbol *sym, union Lis/ +SET_SYMBOL_VAL c-src/emacs/src/lisp.h /^# define SET_SYMBOL_VAL(sym, v) lisp_h_SET_SYMBOL_/ +SINGLE_LETTER_MOD c-src/emacs/src/keyboard.c /^#define SINGLE_LETTER_MOD(BIT) \\$/ +SINGLE_LETTER_MOD c-src/emacs/src/keyboard.c 6212 +SINGLE_LETTER_MOD c-src/emacs/src/keyboard.c /^#define SINGLE_LETTER_MOD(BIT) \\$/ +SINGLE_LETTER_MOD c-src/emacs/src/keyboard.c 6763 +SIZEFORMAT objc-src/PackInsp.m 57 +SPECPDL_BACKTRACE c-src/emacs/src/lisp.h 2948 +SPECPDL_LET c-src/emacs/src/lisp.h 2949 +SPECPDL_LET_DEFAULT c-src/emacs/src/lisp.h 2952 +SPECPDL_LET_LOCAL c-src/emacs/src/lisp.h 2951 +SPECPDL_UNWIND c-src/emacs/src/lisp.h 2944 +SPECPDL_UNWIND_INT c-src/emacs/src/lisp.h 2946 +SPECPDL_UNWIND_PTR c-src/emacs/src/lisp.h 2945 +SPECPDL_UNWIND_VOID c-src/emacs/src/lisp.h 2947 +SRCS make-src/Makefile /^SRCS=Makefile ${ADASRC} ${ASRC} ${CSRC} ${CPSRC} $/ +SREF c-src/emacs/src/lisp.h /^SREF (Lisp_Object string, ptrdiff_t index)$/ +SSDATA c-src/emacs/src/lisp.h /^SSDATA (Lisp_Object string)$/ +SSET c-src/emacs/src/lisp.h /^SSET (Lisp_Object string, ptrdiff_t index, unsigne/ +STACK_CONS c-src/emacs/src/lisp.h /^#define STACK_CONS(a, b) \\$/ +STATE_ABORT php-src/lce_functions.php 25 +STATE_COMPRESSD objc-src/PackInsp.m 54 +STATE_INSTALLED objc-src/PackInsp.m 53 +STATE_LOOP php-src/lce_functions.php 27 +STATE_OK php-src/lce_functions.php 26 +STATE_UNINSTALLED objc-src/PackInsp.m 52 +STAT_EQ objc-src/PackInsp.m /^#define STAT_EQ(s1, s2) ((s1)->st_ino == (s2)->st_/ +STDIN c-src/etags.c 408 +STDIN c-src/etags.c 411 +STOP_POLLING c-src/emacs/src/keyboard.c 2166 +STRING_BYTES c-src/emacs/src/lisp.h /^STRING_BYTES (struct Lisp_String *s)$/ +STRING_BYTES_BOUND c-src/emacs/src/lisp.h 1261 +STRING_MULTIBYTE c-src/emacs/src/lisp.h /^STRING_MULTIBYTE (Lisp_Object str)$/ +STRING_SET_CHARS c-src/emacs/src/lisp.h /^STRING_SET_CHARS (Lisp_Object string, ptrdiff_t ne/ +STRING_SET_MULTIBYTE c-src/emacs/src/lisp.h /^#define STRING_SET_MULTIBYTE(STR) \\$/ +STRING_SET_UNIBYTE c-src/emacs/src/lisp.h /^#define STRING_SET_UNIBYTE(STR) \\$/ +SUBRP c-src/emacs/src/lisp.h /^SUBRP (Lisp_Object a)$/ +SUB_CHAR_TABLE_OFFSET c-src/emacs/src/lisp.h 1701 +SUB_CHAR_TABLE_P c-src/emacs/src/lisp.h /^SUB_CHAR_TABLE_P (Lisp_Object a)$/ +SXHASH_REDUCE c-src/emacs/src/lisp.h /^SXHASH_REDUCE (EMACS_UINT x)$/ +SYMBOLP c-src/emacs/src/lisp.h /^# define SYMBOLP(x) lisp_h_SYMBOLP (x)$/ +SYMBOL_BLV c-src/emacs/src/lisp.h /^SYMBOL_BLV (struct Lisp_Symbol *sym)$/ +SYMBOL_CONSTANT_P c-src/emacs/src/lisp.h /^# define SYMBOL_CONSTANT_P(sym) lisp_h_SYMBOL_CONS/ +SYMBOL_FORWARDED c-src/emacs/src/lisp.h 651 +SYMBOL_FWD c-src/emacs/src/lisp.h /^SYMBOL_FWD (struct Lisp_Symbol *sym)$/ +SYMBOL_INDEX c-src/emacs/src/lisp.h /^#define SYMBOL_INDEX(sym) i##sym$/ +SYMBOL_INTERNED c-src/emacs/src/lisp.h 642 +SYMBOL_INTERNED_IN_INITIAL_OBARRAY c-src/emacs/src/lisp.h 643 +SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P c-src/emacs/src/lisp.h /^SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (Lisp_Object / +SYMBOL_INTERNED_P c-src/emacs/src/lisp.h /^SYMBOL_INTERNED_P (Lisp_Object sym)$/ +SYMBOL_LOCALIZED c-src/emacs/src/lisp.h 650 +SYMBOL_NAME c-src/emacs/src/lisp.h /^SYMBOL_NAME (Lisp_Object sym)$/ +SYMBOL_PLAINVAL c-src/emacs/src/lisp.h 648 +SYMBOL_UNINTERNED c-src/emacs/src/lisp.h 641 +SYMBOL_VAL c-src/emacs/src/lisp.h /^# define SYMBOL_VAL(sym) lisp_h_SYMBOL_VAL (sym)$/ +SYMBOL_VARALIAS c-src/emacs/src/lisp.h 649 +SYSCALL c-src/machsyscalls.c /^#define SYSCALL(name, number, type, args, typed_ar/ +Sample tex-src/gzip.texi /^@node Sample, Invoking gzip, Overview, Top$/ +Scheme_functions c-src/etags.c /^Scheme_functions (FILE *inf)$/ +Scheme_help c-src/etags.c 667 +Scheme_suffixes c-src/etags.c 665 +SelectLayer lua-src/allegro.lua /^function SelectLayer (layer)$/ +Self/f ada-src/2ataspri.adb /^ function Self return TCB_Ptr is$/ +Self/f ada-src/2ataspri.ads /^ function Self return TCB_Ptr;$/ +Server pyt-src/server.py /^class Server:$/ +ServerEdit pyt-src/server.py /^class ServerEdit(Frame):$/ +Set_Own_Priority/p ada-src/2ataspri.adb /^ procedure Set_Own_Priority (Prio : System.Any_P/ +Set_Own_Priority/p ada-src/2ataspri.ads /^ procedure Set_Own_Priority (Prio : System.Any_P/ +Set_Priority/p ada-src/2ataspri.adb /^ procedure Set_Priority$/ +Set_Priority/p ada-src/2ataspri.ads /^ procedure Set_Priority (T : TCB_Ptr; Prio : Sys/ +SimpleCalc objcpp-src/SimpleCalc.H /^@interface SimpleCalc:Object$/ +SkipBlanks pas-src/common.pas /^function SkipBlanks; (*($/ +SkipChars pas-src/common.pas /^function SkipChars; (*($/ +SkipSpaces pas-src/common.pas /^procedure SkipSpaces; (* (Str : NameString; var I / +Square.something:Bar lua-src/test.lua /^function Square.something:Bar ()$/ +StartDay cp-src/functions.cpp /^Date StartDay(Date a,int days){\/\/Function to calcu/ +StripPath pas-src/common.pas /^function StripPath; (*($/ +SubString pas-src/common.pas /^function SubString; (*($/ +Subprocess objc-src/Subprocess.h 41 +Subprocess objc-src/Subprocess.h /^@interface Subprocess:Object$/ +System.Task_Primitives/b ada-src/2ataspri.adb /^package body System.Task_Primitives is$/ +System.Task_Primitives/s ada-src/2ataspri.ads /^package System.Task_Primitives is$/ +T cp-src/fail.C 14 +T2 cp-src/fail.C 16 +T3 c.c 163 +TAGS make-src/Makefile /^TAGS: etags.c$/ +TAG_PTR c-src/emacs/src/lisp.h /^#define TAG_PTR(tag, ptr) \\$/ +TAG_SYMOFFSET c-src/emacs/src/lisp.h /^#define TAG_SYMOFFSET(offset) \\$/ +TAS_Cell/t ada-src/2ataspri.ads /^ type TAS_Cell is private;$/ +TAS_Cell/t ada-src/2ataspri.ads /^ type TAS_Cell is$/ +TCB_Ptr/t ada-src/2ataspri.ads /^ type TCB_Ptr is access all Task_Control_Block;$/ +TCLFLAGS make-src/Makefile /^TCLFLAGS=--lang=none --regex='\/proc[ \\t]+\\([^ \\t]+/ +TERMINALP c-src/emacs/src/lisp.h /^TERMINALP (Lisp_Object a)$/ +TEST php-src/ptest.php 1 +TEXSRC make-src/Makefile /^TEXSRC=testenv.tex gzip.texi texinfo.tex nonewline/ +TEX_LESC c-src/etags.c 4986 +TEX_SESC c-src/etags.c 4987 +TEX_clgrp c-src/etags.c 4922 +TEX_decode_env c-src/etags.c /^TEX_decode_env (const char *evarname, const char */ +TEX_defenv c-src/etags.c 4912 +TEX_esc c-src/etags.c 4920 +TEX_mode c-src/etags.c /^TEX_mode (FILE *inf)$/ +TEX_opgrp c-src/etags.c 4921 +TEX_toktab c-src/etags.c 4908 +TOTAL_KEYWORDS c-src/etags.c 2325 +TSL/s ada-src/2ataspri.adb /^ package TSL renames System.Tasking_Soft_Links;$/ +TYPESTOSTAT objc-src/PackInsp.h 37 +TYPE_RANGED_INTEGERP c-src/emacs/src/lisp.h /^#define TYPE_RANGED_INTEGERP(type, x) \\$/ +Tapes tex-src/gzip.texi /^@node Tapes, Problems, Environment, Top$/ +Task_Control_Block/t ada-src/2ataspri.ads /^ type Task_Control_Block is record$/ +Task_Storage_Size/t ada-src/2ataspri.ads /^ type Task_Storage_Size is new Interfaces.C.size/ +Task_Type/b ada-src/etags-test-for.ada /^ task body Task_Type is$/ +Task_Type/b ada-src/waroquiers.ada /^ task body Task_Type is$/ +Task_Type/k ada-src/etags-test-for.ada /^ task type Task_Type is$/ +Task_Type/k ada-src/waroquiers.ada /^ task type Task_Type is$/ +TeX_commands c-src/etags.c /^TeX_commands (FILE *inf)$/ +TeX_help c-src/etags.c 674 +TeX_suffixes c-src/etags.c 672 +Test_Abort/p ada-src/2ataspri.adb /^ procedure Test_Abort is$/ +Test_Abort/p ada-src/2ataspri.ads /^ procedure Test_Abort;$/ +Test_And_Set/p ada-src/2ataspri.adb /^ procedure Test_And_Set (Cell : in out TAS_Cell;/ +Test_And_Set/p ada-src/2ataspri.ads /^ procedure Test_And_Set (Cell : in out TAS_Cell;/ +Texinfo_help c-src/etags.c 688 +Texinfo_nodes c-src/etags.c /^Texinfo_nodes (FILE *inf)$/ +Texinfo_suffixes c-src/etags.c 686 +Time_to_position c-src/emacs/src/keyboard.c /^Time_to_position (Time encoded_pos)$/ +To_Lower pas-src/common.pas /^function To_Lower;(*(ch:char) : char;*)$/ +To_Start_Addr/f ada-src/2ataspri.adb /^ function To_Start_Addr is new$/ +To_TCB_Ptr/f ada-src/2ataspri.adb /^ function To_TCB_Ptr is new$/ +To_Upper pas-src/common.pas /^function To_Upper;(*(ch:char) : char;*)$/ +To_void_ptr/f ada-src/2ataspri.adb /^ function To_void_ptr is new$/ +Top tex-src/gzip.texi /^@node Top, , , (dir)$/ +Truc.Bidule/b ada-src/etags-test-for.ada /^package body Truc.Bidule is$/ +Truc.Bidule/b ada-src/waroquiers.ada /^package body Truc.Bidule is$/ +Truc.Bidule/s ada-src/etags-test-for.ada /^package Truc.Bidule is$/ +Truc.Bidule/s ada-src/waroquiers.ada /^package Truc.Bidule is$/ +Truc/s ada-src/etags-test-for.ada /^package Truc is$/ +Truc/s ada-src/waroquiers.ada /^package Truc is$/ +Type_Specific_Data/t ada-src/etags-test-for.ada /^ type Type_Specific_Data is record$/ +UCHAR c-src/emacs/src/lisp.h 2424 +UNARY y-src/cccp.c 18 +UNDEFINED c-src/h.h 118 +UNEVALLED c-src/emacs/src/lisp.h 2834 +UNGCPRO c-src/emacs/src/lisp.h 3202 +UNGCPRO c-src/emacs/src/lisp.h 3257 +UNGCPRO c-src/emacs/src/lisp.h 3353 +UNLOCK c-src/emacs/src/gmalloc.c /^#define UNLOCK() \\$/ +UNLOCK c-src/emacs/src/gmalloc.c /^#define UNLOCK()$/ +UNLOCK_ALIGNED_BLOCKS c-src/emacs/src/gmalloc.c /^#define UNLOCK_ALIGNED_BLOCKS() \\$/ +UNLOCK_ALIGNED_BLOCKS c-src/emacs/src/gmalloc.c /^#define UNLOCK_ALIGNED_BLOCKS()$/ +UNSIGNED_CMP c-src/emacs/src/lisp.h /^#define UNSIGNED_CMP(a, op, b) \\$/ +USE_LSB_TAG c-src/emacs/src/lisp.h 271 +USE_LSB_TAG c-src/emacs/src/lisp.h /^DEFINE_GDB_SYMBOL_BEGIN (bool, USE_LSB_TAG)$/ +USE_PTHREAD c-src/emacs/src/gmalloc.c 25 +USE_SAFE_ALLOCA c-src/emacs/src/lisp.h 4560 +USE_STACK_CONS c-src/emacs/src/lisp.h 4689 +USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h 4652 +USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h 4658 +USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h 4659 +USE_STACK_STRING c-src/emacs/src/lisp.h 4691 +U_CHAR cccp.y 38 +U_CHAR y-src/cccp.y 38 +Unlock/p ada-src/2ataspri.adb /^ procedure Unlock (L : in out Lock) is$/ +Unlock/p ada-src/2ataspri.ads /^ procedure Unlock (L : in out Lock);$/ +User pyt-src/server.py /^class User:$/ +UserEdit pyt-src/server.py /^class UserEdit(Frame):$/ +VALBITS c-src/emacs/src/lisp.h 246 +VALMASK c-src/emacs/src/lisp.h 829 +VALMASK c-src/emacs/src/lisp.h /^DEFINE_GDB_SYMBOL_BEGIN (EMACS_INT, VALMASK)$/ +VAL_MAX c-src/emacs/src/lisp.h 263 +VECSIZE c-src/emacs/src/lisp.h /^#define VECSIZE(type) \\$/ +VECTORLIKEP c-src/emacs/src/lisp.h /^# define VECTORLIKEP(x) lisp_h_VECTORLIKEP (x)$/ +VECTORP c-src/emacs/src/lisp.h /^VECTORP (Lisp_Object x)$/ +VERSION c-src/etags.c 789 +VERSION erl-src/gs_dialog.erl /^-define(VERSION, '2001.1101').$/ +VERSION objc-src/PackInsp.m 34 +VHDLFLAGS make-src/Makefile /^VHDLFLAGS=--language=none --regex='\/[ \\t]*\\(ARCHIT/ +Vabbrev_start_location c-src/abbrev.c 63 +Vabbrev_start_location_buffer c-src/abbrev.c 66 +Vabbrev_table_name_list c-src/abbrev.c 43 +ValToNmStr pas-src/common.pas /^function ValToNmStr; (*($/ +Vfundamental_mode_abbrev_table c-src/abbrev.c 52 +Vglobal_abbrev_table c-src/abbrev.c 48 +Vlast_abbrev c-src/abbrev.c 70 +Vlast_abbrev_text c-src/abbrev.c 75 +Vlispy_mouse_stem c-src/emacs/src/keyboard.c 5172 +Vpre_abbrev_expand_hook c-src/abbrev.c 83 +WAIT_READING_MAX c-src/emacs/src/lisp.h 4281 +WAIT_READING_MAX c-src/emacs/src/lisp.h 4283 +WARNINGS make-src/Makefile /^WARNINGS=-pedantic -Wall -Wpointer-arith -Winline / +WCHAR_TYPE_SIZE cccp.y 99 +WCHAR_TYPE_SIZE y-src/cccp.y 99 +WHITE cp-src/screen.hpp 27 +WINDOWP c-src/emacs/src/lisp.h /^WINDOWP (Lisp_Object a)$/ +WINDOWSNT c-src/etags.c 101 +WINDOWSNT c-src/etags.c 102 +WINDOW_CONFIGURATIONP c-src/emacs/src/lisp.h /^WINDOW_CONFIGURATIONP (Lisp_Object a)$/ +WORKING objc-src/PackInsp.m 368 +WorkingDays cp-src/functions.cpp /^int WorkingDays(Date a, Date b){$/ +Write_Lock/p ada-src/2ataspri.adb /^ procedure Write_Lock (L : in out Lock; Ceiling_/ +Write_Lock/p ada-src/2ataspri.ads /^ procedure Write_Lock (L : in out Lock; Ceiling_/ +X c-src/h.h 100 +XBOOL_VECTOR c-src/emacs/src/lisp.h /^XBOOL_VECTOR (Lisp_Object a)$/ +XBUFFER c-src/emacs/src/lisp.h /^XBUFFER (Lisp_Object a)$/ +XBUFFER_OBJFWD c-src/emacs/src/lisp.h /^XBUFFER_OBJFWD (union Lisp_Fwd *a)$/ +XCAR c-src/emacs/src/lisp.h /^# define XCAR(c) lisp_h_XCAR (c)$/ +XCDR c-src/emacs/src/lisp.h /^# define XCDR(c) lisp_h_XCDR (c)$/ +XCHAR_TABLE c-src/emacs/src/lisp.h /^XCHAR_TABLE (Lisp_Object a)$/ +XCHG_0 c-src/sysdep.h 47 +XCHG_1 c-src/sysdep.h 48 +XCHG_2 c-src/sysdep.h 49 +XCHG_3 c-src/sysdep.h 50 +XCHG_4 c-src/sysdep.h 51 +XCHG_5 c-src/sysdep.h 52 +XCONS c-src/emacs/src/lisp.h /^# define XCONS(a) lisp_h_XCONS (a)$/ +XDEFUN c.c /^XDEFUN ("x-get-selection-internal", Fx_get_selecti/ +XFASTINT c-src/emacs/src/lisp.h /^# define XFASTINT(a) lisp_h_XFASTINT (a)$/ +XFASTINT c-src/emacs/src/lisp.h /^XFASTINT (Lisp_Object a)$/ +XFINALIZER c-src/emacs/src/lisp.h /^XFINALIZER (Lisp_Object a)$/ +XFLOAT c-src/emacs/src/lisp.h /^XFLOAT (Lisp_Object a)$/ +XFLOATINT c-src/emacs/src/lisp.h /^XFLOATINT (Lisp_Object n)$/ +XFLOAT_DATA c-src/emacs/src/lisp.h /^XFLOAT_DATA (Lisp_Object f)$/ +XFWDTYPE c-src/emacs/src/lisp.h /^XFWDTYPE (union Lisp_Fwd *a)$/ +XHASH c-src/emacs/src/lisp.h /^# define XHASH(a) lisp_h_XHASH (a)$/ +XHASH_TABLE c-src/emacs/src/lisp.h /^XHASH_TABLE (Lisp_Object a)$/ +XIL c-src/emacs/src/lisp.h /^# define XIL(i) lisp_h_XIL (i)$/ +XINT c-src/emacs/src/lisp.h /^# define XINT(a) lisp_h_XINT (a)$/ +XINT c-src/emacs/src/lisp.h /^XINT (Lisp_Object a)$/ +XINTPTR c-src/emacs/src/lisp.h /^XINTPTR (Lisp_Object a)$/ +XLI c-src/emacs/src/lisp.h /^# define XLI(o) lisp_h_XLI (o)$/ +XLI_BUILTIN_LISPSYM c-src/emacs/src/lisp.h /^#define XLI_BUILTIN_LISPSYM(iname) TAG_SYMOFFSET (/ +XMARKER c-src/emacs/src/lisp.h /^XMARKER (Lisp_Object a)$/ +XMISC c-src/emacs/src/lisp.h /^XMISC (Lisp_Object a)$/ +XMISCANY c-src/emacs/src/lisp.h /^XMISCANY (Lisp_Object a)$/ +XMISCTYPE c-src/emacs/src/lisp.h /^XMISCTYPE (Lisp_Object a)$/ +XOVERLAY c-src/emacs/src/lisp.h /^XOVERLAY (Lisp_Object a)$/ +XPNTR c-src/emacs/src/lisp.h /^# define XPNTR(a) lisp_h_XPNTR (a)$/ +XPROCESS c-src/emacs/src/lisp.h /^XPROCESS (Lisp_Object a)$/ +XSAVE_FUNCPOINTER c-src/emacs/src/lisp.h /^XSAVE_FUNCPOINTER (Lisp_Object obj, int n)$/ +XSAVE_INTEGER c-src/emacs/src/lisp.h /^XSAVE_INTEGER (Lisp_Object obj, int n)$/ +XSAVE_OBJECT c-src/emacs/src/lisp.h /^XSAVE_OBJECT (Lisp_Object obj, int n)$/ +XSAVE_POINTER c-src/emacs/src/lisp.h /^XSAVE_POINTER (Lisp_Object obj, int n)$/ +XSAVE_VALUE c-src/emacs/src/lisp.h /^XSAVE_VALUE (Lisp_Object a)$/ +XSETBOOL_VECTOR c-src/emacs/src/lisp.h /^#define XSETBOOL_VECTOR(a, b) (XSETPSEUDOVECTOR (a/ +XSETBUFFER c-src/emacs/src/lisp.h /^#define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, / +XSETCDR c-src/emacs/src/lisp.h /^XSETCDR (Lisp_Object c, Lisp_Object n)$/ +XSETCHAR_TABLE c-src/emacs/src/lisp.h /^#define XSETCHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a,/ +XSETCOMPILED c-src/emacs/src/lisp.h /^#define XSETCOMPILED(a, b) (XSETPSEUDOVECTOR (a, b/ +XSETCONS c-src/emacs/src/lisp.h /^#define XSETCONS(a, b) ((a) = make_lisp_ptr (b, Li/ +XSETFASTINT c-src/emacs/src/lisp.h /^#define XSETFASTINT(a, b) ((a) = make_natnum (b))$/ +XSETFLOAT c-src/emacs/src/lisp.h /^#define XSETFLOAT(a, b) ((a) = make_lisp_ptr (b, L/ +XSETINT c-src/emacs/src/lisp.h /^#define XSETINT(a, b) ((a) = make_number (b))$/ +XSETMISC c-src/emacs/src/lisp.h /^#define XSETMISC(a, b) ((a) = make_lisp_ptr (b, Li/ +XSETPROCESS c-src/emacs/src/lisp.h /^#define XSETPROCESS(a, b) (XSETPSEUDOVECTOR (a, b,/ +XSETPSEUDOVECTOR c-src/emacs/src/lisp.h /^#define XSETPSEUDOVECTOR(a, b, code) \\$/ +XSETPVECTYPE c-src/emacs/src/lisp.h /^#define XSETPVECTYPE(v, code) \\$/ +XSETPVECTYPESIZE c-src/emacs/src/lisp.h /^#define XSETPVECTYPESIZE(v, code, lispsize, restsi/ +XSETSTRING c-src/emacs/src/lisp.h /^#define XSETSTRING(a, b) ((a) = make_lisp_ptr (b, / +XSETSUBR c-src/emacs/src/lisp.h /^#define XSETSUBR(a, b) (XSETPSEUDOVECTOR (a, b, PV/ +XSETSUB_CHAR_TABLE c-src/emacs/src/lisp.h /^#define XSETSUB_CHAR_TABLE(a, b) (XSETPSEUDOVECTOR/ +XSETSYMBOL c-src/emacs/src/lisp.h /^#define XSETSYMBOL(a, b) ((a) = make_lisp_symbol (/ +XSETTERMINAL c-src/emacs/src/lisp.h /^#define XSETTERMINAL(a, b) (XSETPSEUDOVECTOR (a, b/ +XSETTYPED_PSEUDOVECTOR c-src/emacs/src/lisp.h /^#define XSETTYPED_PSEUDOVECTOR(a, b, size, code) / +XSETVECTOR c-src/emacs/src/lisp.h /^#define XSETVECTOR(a, b) ((a) = make_lisp_ptr (b, / +XSETWINDOW c-src/emacs/src/lisp.h /^#define XSETWINDOW(a, b) (XSETPSEUDOVECTOR (a, b, / +XSETWINDOW_CONFIGURATION c-src/emacs/src/lisp.h /^#define XSETWINDOW_CONFIGURATION(a, b) \\$/ +XSET_HASH_TABLE c-src/emacs/src/lisp.h /^#define XSET_HASH_TABLE(VAR, PTR) \\$/ +XSTRING c-src/emacs/src/lisp.h /^XSTRING (Lisp_Object a)$/ +XSUBR c-src/emacs/src/lisp.h /^XSUBR (Lisp_Object a)$/ +XSUB_CHAR_TABLE c-src/emacs/src/lisp.h /^XSUB_CHAR_TABLE (Lisp_Object a)$/ +XSYMBOL c-src/emacs/src/lisp.h /^# define XSYMBOL(a) lisp_h_XSYMBOL (a)$/ +XSYMBOL c-src/emacs/src/lisp.h /^XSYMBOL (Lisp_Object a)$/ +XTERMINAL c-src/emacs/src/lisp.h /^XTERMINAL (Lisp_Object a)$/ +XTYPE c-src/emacs/src/lisp.h /^# define XTYPE(a) lisp_h_XTYPE (a)$/ +XTYPE c-src/emacs/src/lisp.h /^XTYPE (Lisp_Object a)$/ +XUNTAG c-src/emacs/src/lisp.h /^# define XUNTAG(a, type) lisp_h_XUNTAG (a, type)$/ +XUNTAG c-src/emacs/src/lisp.h /^XUNTAG (Lisp_Object a, int type)$/ +XWINDOW c-src/emacs/src/lisp.h /^XWINDOW (Lisp_Object a)$/ +XX cp-src/x.cc 1 +Xyzzy ruby-src/test1.ru 13 +Y c-src/h.h 100 +YACC c-src/etags.c 2199 +YELLOW cp-src/screen.hpp 26 +YSRC make-src/Makefile /^YSRC=parse.y parse.c atest.y cccp.c cccp.y$/ +YYABORT /usr/share/bison/bison.simple 153 +YYABORT /usr/share/bison/bison.simple 154 +YYACCEPT /usr/share/bison/bison.simple 152 +YYACCEPT /usr/share/bison/bison.simple 153 +YYBACKUP /usr/share/bison/bison.simple /^#define YYBACKUP(Token, Value) \\$/ +YYBACKUP /usr/share/bison/bison.simple /^#define YYBACKUP(Token, Value) \\$/ +YYBISON y-src/parse.c 4 +YYBISON y-src/cccp.c 4 +YYDEBUG parse.y 88 +YYDEBUG cccp.y 122 +YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args) \\$/ +YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args)$/ +YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args) \\$/ +YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args)$/ +YYEMPTY /usr/share/bison/bison.simple 150 +YYEMPTY /usr/share/bison/bison.simple 151 +YYEOF /usr/share/bison/bison.simple 151 +YYEOF /usr/share/bison/bison.simple 152 +YYERRCODE /usr/share/bison/bison.simple 178 +YYERRCODE /usr/share/bison/bison.simple 179 +YYERROR /usr/share/bison/bison.simple 154 +YYERROR /usr/share/bison/bison.simple 155 +YYFAIL /usr/share/bison/bison.simple 158 +YYFAIL /usr/share/bison/bison.simple 159 +YYFINAL parse.y 93 +YYFINAL cccp.y 127 +YYFLAG parse.y 94 +YYFLAG cccp.y 128 +YYFPRINTF /usr/share/bison/bison.simple 225 +YYFPRINTF /usr/share/bison/bison.simple 226 +YYINITDEPTH /usr/share/bison/bison.simple 244 +YYINITDEPTH /usr/share/bison/bison.simple 245 +YYLAST parse.y 266 +YYLAST cccp.y 274 +YYLEX /usr/share/bison/bison.simple 200 +YYLEX /usr/share/bison/bison.simple 202 +YYLEX /usr/share/bison/bison.simple 206 +YYLEX /usr/share/bison/bison.simple 208 +YYLEX /usr/share/bison/bison.simple 212 +YYLEX /usr/share/bison/bison.simple 201 +YYLEX /usr/share/bison/bison.simple 203 +YYLEX /usr/share/bison/bison.simple 207 +YYLEX /usr/share/bison/bison.simple 209 +YYLEX /usr/share/bison/bison.simple 213 +YYLLOC_DEFAULT /usr/share/bison/bison.simple /^# define YYLLOC_DEFAULT(Current, Rhs, N) \\$/ +YYLLOC_DEFAULT /usr/share/bison/bison.simple /^# define YYLLOC_DEFAULT(Current, Rhs, N) \\$/ +YYMAXDEPTH /usr/share/bison/bison.simple 255 +YYMAXDEPTH /usr/share/bison/bison.simple 259 +YYMAXDEPTH /usr/share/bison/bison.simple 256 +YYMAXDEPTH /usr/share/bison/bison.simple 260 +YYNTBASE parse.y 95 +YYNTBASE cccp.y 129 +YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 351 +YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 354 +YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 358 +YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 351 +YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 354 +YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 358 +YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 352 +YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 355 +YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 359 +YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 352 +YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 355 +YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 359 +YYPOPSTACK /usr/share/bison/bison.simple 445 +YYPOPSTACK /usr/share/bison/bison.simple 447 +YYPOPSTACK /usr/share/bison/bison.simple 445 +YYPOPSTACK /usr/share/bison/bison.simple 447 +YYRECOVERING /usr/share/bison/bison.simple /^#define YYRECOVERING() (!!yyerrstatus)$/ +YYRECOVERING /usr/share/bison/bison.simple /^#define YYRECOVERING() (!!yyerrstatus)$/ +YYSIZE_T /usr/share/bison/bison.simple 51 +YYSIZE_T /usr/share/bison/bison.simple 56 +YYSIZE_T /usr/share/bison/bison.simple 71 +YYSIZE_T /usr/share/bison/bison.simple 75 +YYSIZE_T /usr/share/bison/bison.simple 128 +YYSIZE_T /usr/share/bison/bison.simple 131 +YYSIZE_T /usr/share/bison/bison.simple 136 +YYSIZE_T /usr/share/bison/bison.simple 140 +YYSIZE_T /usr/share/bison/bison.simple 145 +YYSIZE_T /usr/share/bison/bison.simple 52 +YYSIZE_T /usr/share/bison/bison.simple 57 +YYSIZE_T /usr/share/bison/bison.simple 72 +YYSIZE_T /usr/share/bison/bison.simple 76 +YYSIZE_T /usr/share/bison/bison.simple 129 +YYSIZE_T /usr/share/bison/bison.simple 132 +YYSIZE_T /usr/share/bison/bison.simple 137 +YYSIZE_T /usr/share/bison/bison.simple 141 +YYSIZE_T /usr/share/bison/bison.simple 146 +YYSTACK_ALLOC /usr/share/bison/bison.simple 50 +YYSTACK_ALLOC /usr/share/bison/bison.simple 55 +YYSTACK_ALLOC /usr/share/bison/bison.simple 59 +YYSTACK_ALLOC /usr/share/bison/bison.simple 78 +YYSTACK_ALLOC /usr/share/bison/bison.simple 51 +YYSTACK_ALLOC /usr/share/bison/bison.simple 56 +YYSTACK_ALLOC /usr/share/bison/bison.simple 60 +YYSTACK_ALLOC /usr/share/bison/bison.simple 79 +YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N) \\$/ +YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N) \\$/ +YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N) \\$/ +YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N) \\$/ +YYSTACK_FREE /usr/share/bison/bison.simple /^# define YYSTACK_FREE(Ptr) do { \/* empty *\/; } wh/ +YYSTACK_FREE /usr/share/bison/bison.simple 79 +YYSTACK_FREE /usr/share/bison/bison.simple /^# define YYSTACK_FREE(Ptr) do { \/* empty *\/; } wh/ +YYSTACK_FREE /usr/share/bison/bison.simple 80 +YYSTACK_GAP_MAX /usr/share/bison/bison.simple 93 +YYSTACK_GAP_MAX /usr/share/bison/bison.simple 94 +YYSTACK_RELOCATE /usr/share/bison/bison.simple /^# define YYSTACK_RELOCATE(Type, Stack) \\$/ +YYSTACK_RELOCATE /usr/share/bison/bison.simple 548 +YYSTACK_RELOCATE /usr/share/bison/bison.simple /^# define YYSTACK_RELOCATE(Type, Stack) \\$/ +YYSTACK_RELOCATE /usr/share/bison/bison.simple 548 +YYSTD /usr/share/bison/bison.simple /^# define YYSTD(x) std::x$/ +YYSTD /usr/share/bison/bison.simple /^# define YYSTD(x) x$/ +YYSTD /usr/share/bison/bison.simple /^# define YYSTD(x) std::x$/ +YYSTD /usr/share/bison/bison.simple /^# define YYSTD(x) x$/ +YYSTYPE y-src/parse.y 71 +YYSTYPE y-src/parse.y 72 +YYSTYPE parse.y 71 +YYSTYPE parse.y 72 +YYSTYPE parse.y 85 +YYSTYPE cccp.y 119 +YYTERROR /usr/share/bison/bison.simple 177 +YYTERROR /usr/share/bison/bison.simple 178 +YYTRANSLATE parse.y /^#define YYTRANSLATE(x) ((unsigned)(x) <= 278 ? yyt/ +YYTRANSLATE cccp.y /^#define YYTRANSLATE(x) ((unsigned)(x) <= 269 ? yyt/ +YY_DECL_NON_LSP_VARIABLES /usr/share/bison/bison.simple 374 +YY_DECL_NON_LSP_VARIABLES /usr/share/bison/bison.simple 374 +YY_DECL_VARIABLES /usr/share/bison/bison.simple 385 +YY_DECL_VARIABLES /usr/share/bison/bison.simple 391 +YY_DECL_VARIABLES /usr/share/bison/bison.simple 385 +YY_DECL_VARIABLES /usr/share/bison/bison.simple 391 +Yacc_entries c-src/etags.c /^Yacc_entries (FILE *inf)$/ +Yacc_help c-src/etags.c 693 +Yacc_suffixes c-src/etags.c 691 +Z c-src/h.h 100 +[] ruby-src/test.rb /^ def [](y)$/ +[]= ruby-src/test.rb /^ def []=(y, val)$/ +\ tex-src/texinfo.tex /^\\def\\ {{\\fontdimen2\\font=\\tclosesave{} }}%$/ +\ tex-src/texinfo.tex /^\\gdef\\sepspaces{\\def {\\ }}}$/ +\' tex-src/texinfo.tex /^\\def\\'{{'}}$/ +\* tex-src/texinfo.tex /^\\def\\*{\\hfil\\break\\hbox{}\\ignorespaces}$/ +\. tex-src/texinfo.tex /^\\def\\.{.\\spacefactor=3000 }$/ +\1 c-src/abbrev.c /^ DEFVAR_LISP ("abbrev-table-name-list", &Vabbrev_/ +\1 c-src/abbrev.c /^ DEFVAR_LISP ("global-abbrev-table", &Vglobal_abb/ +\1 c-src/abbrev.c /^ DEFVAR_LISP ("fundamental-mode-abbrev-table", &V/ +\1 c-src/abbrev.c /^ DEFVAR_LISP ("last-abbrev", &Vlast_abbrev, + "/ +\1 c-src/abbrev.c /^ DEFVAR_LISP ("last-abbrev-text", &Vlast_abbrev_t/ +\1 c-src/abbrev.c /^ DEFVAR_INT ("last-abbrev-location", &last_abbrev/ +\1 c-src/abbrev.c /^ DEFVAR_LISP ("abbrev-start-location", &Vabbrev_s/ +\1 c-src/abbrev.c /^ DEFVAR_LISP ("abbrev-start-location-buffer", &Va/ +\1 c-src/abbrev.c /^ DEFVAR_PER_BUFFER ("local-abbrev-table", ¤/ +\1 c-src/abbrev.c /^ DEFVAR_BOOL ("abbrevs-changed", &abbrevs_changed/ +\1 c-src/abbrev.c /^ DEFVAR_BOOL ("abbrev-all-caps", &abbrev_all_caps/ +\1 c-src/abbrev.c /^ DEFVAR_LISP ("pre-abbrev-expand-hook", &Vpre_abb/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("internal--top-level-message", Vint/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("last-command-event", last_command_/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("last-nonmenu-event", last_nonmenu_/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("last-input-event", last_input_even/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("unread-command-events", Vunread_co/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("unread-post-input-method-events", / +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("unread-input-method-events", Vunre/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("meta-prefix-char", meta_prefix_cha/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("last-command", Vlast_command, + / +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("real-last-command", Vreal_last_c/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("last-repeatable-command", Vlast_/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("this-command", Vthis_command, + / +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("real-this-command", Vreal_this_com/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("this-command-keys-shift-translated/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("this-original-command", Vthis_orig/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT ("auto-save-interval", auto_save_inte/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("auto-save-timeout", Vauto_save_tim/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("echo-keystrokes", Vecho_keystrokes/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT ("polling-period", polling_period, + / +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("double-click-time", Vdouble_click_/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT ("double-click-fuzz", double_click_fu/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT ("num-input-keys", num_input_keys, + / +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT ("num-nonmacro-input-events", num_non/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("last-event-frame", Vlast_event_fra/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("tty-erase-char", Vtty_erase_char, +/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("help-char", Vhelp_char, + do/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("help-event-list", Vhelp_event_list/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("help-form", Vhelp_form, + do/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("prefix-help-command", Vprefix_help/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("top-level", Vtop_level, + do/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("keyboard-translate-table", Vkeyb/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_BOOL ("cannot-suspend", cannot_suspend, + / +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_BOOL ("menu-prompting", menu_prompting, + / +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("menu-prompt-more-char", menu_promp/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT ("extra-keyboard-modifiers", extra_ke/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("deactivate-mark", Vdeactivate_mark/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("pre-command-hook", Vpre_command_ho/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("post-command-hook", Vpost_command_/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("echo-area-clear-hook", ..., + / +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("lucid-menu-bar-dirty-flag", Vlucid/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("menu-bar-final-items", Vmenu_bar_f/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("tool-bar-separator-image-expressio/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("overriding-terminal-local-map", +/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("overriding-local-map", Voverriding/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("overriding-local-map-menu-flag", V/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("special-event-map", Vspecial_event/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("track-mouse", do_mouse_tracking, + / +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("system-key-alist", Vsystem_key_a/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("local-function-key-map", Vlocal_/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("input-decode-map", Vinput_decode/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("function-key-map", Vfunction_key_m/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("key-translation-map", Vkey_transla/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("deferred-action-list", Vdeferred_a/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("deferred-action-function", Vdeferr/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("delayed-warnings-list", Vdelayed_w/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("timer-list", Vtimer_list, + / +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("timer-idle-list", Vtimer_idle_list/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("input-method-function", Vinput_met/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("input-method-previous-message", + / +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("show-help-function", Vshow_help_fu/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("disable-point-adjustment", Vdisabl/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("global-disable-point-adjustment", +/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("minibuffer-message-timeout", Vmini/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("throw-on-input", Vthrow_on_input, +/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("command-error-function", Vcommand_/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("enable-disabled-menus-and-buttons"/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("select-active-regions", + Vs/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("saved-region-selection", + V/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("selection-inhibit-update-commands"/ +\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("debug-on-event", + Vd/ +\: tex-src/texinfo.tex /^\\def\\:{\\spacefactor=1000 }$/ +\@ tex-src/texinfo.tex /^\\def\\@{{\\tt \\char '100}}$/ +\@ tex-src/texinfo.tex /^\\def\\@{@}%$/ +\CHAPFopen tex-src/texinfo.tex /^\\def\\CHAPFopen{$/ +\CHAPFplain tex-src/texinfo.tex /^\\def\\CHAPFplain{$/ +\CHAPPAGodd tex-src/texinfo.tex /^\\def\\CHAPPAGodd{$/ +\CHAPPAGoff tex-src/texinfo.tex /^\\def\\CHAPPAGoff{$/ +\CHAPPAGon tex-src/texinfo.tex /^\\def\\CHAPPAGon{$/ +\ENVcheck tex-src/texinfo.tex /^\\def\\ENVcheck{%$/ +\Ealphaenumerate tex-src/texinfo.tex /^\\def\\Ealphaenumerate{\\Eenumerate}$/ +\Ecapsenumerate tex-src/texinfo.tex /^\\def\\Ecapsenumerate{\\Eenumerate}$/ +\Ecartouche tex-src/texinfo.tex /^\\def\\Ecartouche{%$/ +\Edescription tex-src/texinfo.tex /^\\def\\Edescription{\\Etable}% Neccessary kludge.$/ +\Edisplay tex-src/texinfo.tex /^\\def\\Edisplay{\\endgroup\\afterenvbreak}%$/ +\Eexample tex-src/texinfo.tex /^\\def\\Eexample{\\Elisp}$/ +\Eflushleft tex-src/texinfo.tex /^\\def\\Eflushleft{\\endgroup\\afterenvbreak}%$/ +\Eflushright tex-src/texinfo.tex /^\\def\\Eflushright{\\endgroup\\afterenvbreak}%$/ +\Eformat tex-src/texinfo.tex /^\\def\\Eformat{\\endgroup\\afterenvbreak}$/ +\Eftable tex-src/texinfo.tex /^\\def\\Eftable{\\endgraf\\endgroup\\afterenvbreak}%$/ +\Egroup tex-src/texinfo.tex /^ \\def\\Egroup{\\egroup\\endgroup}%$/ +\Eifclear tex-src/texinfo.tex /^\\def\\Eifclear{}$/ +\Eifset tex-src/texinfo.tex /^\\def\\Eifset{}$/ +\Eiftex tex-src/texinfo.tex /^\\def\\Eiftex{}$/ +\Elisp tex-src/texinfo.tex /^\\def\\Elisp{\\endgroup\\afterenvbreak}%$/ +\Equotation tex-src/texinfo.tex /^\\def\\Equotation{\\par\\endgroup\\afterenvbreak}%$/ +\Esmallexample tex-src/texinfo.tex /^\\def\\Esmallexample{\\Elisp}$/ +\Esmallexample tex-src/texinfo.tex /^\\global\\def\\Esmallexample{\\Esmalllisp}$/ +\Esmalllisp tex-src/texinfo.tex /^\\def\\Esmalllisp{\\endgroup\\afterenvbreak}%$/ +\Etable tex-src/texinfo.tex /^\\def\\Etable{\\endgraf\\endgroup\\afterenvbreak}%$/ +\Etitlepage tex-src/texinfo.tex /^\\def\\Etitlepage{%$/ +\Evtable tex-src/texinfo.tex /^\\def\\Evtable{\\endgraf\\endgroup\\afterenvbreak}%$/ +\HEADINGSafter tex-src/texinfo.tex /^\\def\\HEADINGSafter{\\let\\HEADINGShook=\\HEADINGSdoub/ +\HEADINGSdouble tex-src/texinfo.tex /^\\def\\HEADINGSdouble{$/ +\HEADINGSdoublex tex-src/texinfo.tex /^\\def\\HEADINGSdoublex{%$/ +\HEADINGSoff tex-src/texinfo.tex /^\\def\\HEADINGSoff{$/ +\HEADINGSon tex-src/texinfo.tex /^\\def\\HEADINGSon{\\HEADINGSdouble}$/ +\HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSsingle}}$/ +\HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSdouble}}$/ +\HEADINGSsingle tex-src/texinfo.tex /^\\def\\HEADINGSsingle{$/ +\HEADINGSsingleafter tex-src/texinfo.tex /^\\def\\HEADINGSsingleafter{\\let\\HEADINGShook=\\HEADIN/ +\HEADINGSsinglex tex-src/texinfo.tex /^\\def\\HEADINGSsinglex{%$/ +\TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}%$/ +\TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}$/ +\Yappendixletterandtype tex-src/texinfo.tex /^\\def\\Yappendixletterandtype{%$/ +\Ynothing tex-src/texinfo.tex /^\\def\\Ynothing{}$/ +\Ypagenumber tex-src/texinfo.tex /^\\def\\Ypagenumber{\\folio}$/ +\Ysectionnumberandtype tex-src/texinfo.tex /^\\def\\Ysectionnumberandtype{%$/ +\Ytitle tex-src/texinfo.tex /^\\def\\Ytitle{\\thischapter}$/ +\_ tex-src/texinfo.tex /^\\def\\_{{\\realbackslash _}}%$/ +\_ tex-src/texinfo.tex /^\\def\\_{\\lvvmode \\kern.06em \\vbox{\\hrule width.3em / +\` tex-src/texinfo.tex /^\\def\\`{{`}}$/ +\aboveenvbreak tex-src/texinfo.tex /^\\def\\aboveenvbreak{{\\advance\\aboveenvskipamount by/ +\activedoublequote tex-src/texinfo.tex /^\\def\\activedoublequote{{\\tt \\char '042}}$/ +\activeparens tex-src/texinfo.tex /^\\def\\activeparens{%$/ +\afourpaper tex-src/texinfo.tex /^\\def\\afourpaper{$/ +\afterenvbreak tex-src/texinfo.tex /^\\def\\afterenvbreak{\\endgraf \\ifdim\\lastskip<\\above/ +\alphaenumerate tex-src/texinfo.tex /^\\def\\alphaenumerate{\\enumerate{a}}$/ +\appendix tex-src/texinfo.tex /^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/ +\appendixletter tex-src/texinfo.tex /^\\def\\appendixletter{\\char\\the\\appendixno}$/ +\appendixnoderef tex-src/texinfo.tex /^\\def\\appendixnoderef{\\ifx\\lastnode\\relax\\else$/ +\appendixsec tex-src/texinfo.tex /^\\outer\\def\\appendixsec{\\parsearg\\appendixsectionzz/ +\appendixsection tex-src/texinfo.tex /^\\outer\\def\\appendixsection{\\parsearg\\appendixsecti/ +\appendixsectionzzz tex-src/texinfo.tex /^\\def\\appendixsectionzzz #1{\\seccheck{appendixsecti/ +\appendixsetref tex-src/texinfo.tex /^\\def\\appendixsetref#1{%$/ +\appendixsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsec{\\parsearg\\appendixsubsec/ +\appendixsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubseczzz #1{\\seccheck{appendixsubsec/ +\appendixsubsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsubsec{\\parsearg\\appendixsub/ +\appendixsubsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubsubseczzz #1{\\seccheck{appendixsub/ +\appendixzzz tex-src/texinfo.tex /^\\def\\appendixzzz #1{\\seccheck{appendix}%$/ +\asis tex-src/texinfo.tex /^\\def\\asis#1{#1}$/ +\author tex-src/texinfo.tex /^ \\def\\author{\\parsearg\\authorzzz}%$/ +\authorfont tex-src/texinfo.tex /^ \\def\\authorfont{\\authorrm \\normalbaselineskip =/ +\authorzzz tex-src/texinfo.tex /^ \\def\\authorzzz##1{\\ifseenauthor\\else\\vskip 0pt / +\b tex-src/texinfo.tex /^\\def\\b#1{{\\bf #1}}$/ +\b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}%$/ +\b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}$/ +\balancecolumns tex-src/texinfo.tex /^\\def\\balancecolumns{%$/ +\begin tex-src/texinfo.tex /^\\outer\\def\\begin{\\parsearg\\beginxxx}$/ +\begindoublecolumns tex-src/texinfo.tex /^\\def\\begindoublecolumns{\\begingroup$/ +\beginxxx tex-src/texinfo.tex /^\\def\\beginxxx #1{%$/ +\bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }%$/ +\bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }$/ +\bullet tex-src/texinfo.tex /^\\def\\bullet{$\\ptexbullet$}$/ +\bye tex-src/texinfo.tex /^\\outer\\def\\bye{\\pagealignmacro\\tracingstats=1\\ptex/ +\capsenumerate tex-src/texinfo.tex /^\\def\\capsenumerate{\\enumerate{A}}$/ +\cartbot tex-src/texinfo.tex /^\\def\\cartbot{\\hbox to \\cartouter{\\hskip\\lskip$/ +\cartouche tex-src/texinfo.tex /^\\long\\def\\cartouche{%$/ +\carttop tex-src/texinfo.tex /^\\def\\carttop{\\hbox to \\cartouter{\\hskip\\lskip$/ +\cbl tex-src/texinfo.tex /^\\def\\cbl{{\\circle\\char'012\\hskip -6pt}}$/ +\cbr tex-src/texinfo.tex /^\\def\\cbr{{\\hskip 6pt\\circle\\char'011}}$/ +\center tex-src/texinfo.tex /^\\def\\center{\\parsearg\\centerzzz}$/ +\centerzzz tex-src/texinfo.tex /^\\def\\centerzzz #1{{\\advance\\hsize by -\\leftskip$/ +\chapbreak tex-src/texinfo.tex /^\\def\\chapbreak{\\dobreak \\chapheadingskip {-4000}}$/ +\chapentry tex-src/texinfo.tex /^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/ +\chapentryfonts tex-src/texinfo.tex /^\\def\\chapentryfonts{\\secfonts \\rm}$/ +\chapfonts tex-src/texinfo.tex /^\\def\\chapfonts{%$/ +\chapheading tex-src/texinfo.tex /^\\def\\chapheading{\\parsearg\\chapheadingzzz}$/ +\chapheadingzzz tex-src/texinfo.tex /^\\def\\chapheadingzzz #1{\\chapbreak %$/ +\chapoddpage tex-src/texinfo.tex /^\\def\\chapoddpage{\\chappager \\ifodd\\pageno \\else \\h/ +\chappager tex-src/texinfo.tex /^\\def\\chappager{\\par\\vfill\\supereject}$/ +\chapter tex-src/texinfo.tex /^\\outer\\def\\chapter{\\parsearg\\chapterzzz}$/ +\chapternofonts tex-src/texinfo.tex /^\\def\\chapternofonts{%$/ +\chapterzzz tex-src/texinfo.tex /^\\def\\chapterzzz #1{\\seccheck{chapter}%$/ +\char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}%$/ +\char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}$/ +\chfopen tex-src/texinfo.tex /^\\def\\chfopen #1#2{\\chapoddpage {\\chapfonts$/ +\chfplain tex-src/texinfo.tex /^\\def\\chfplain #1#2{%$/ +\cindex tex-src/texinfo.tex /^\\def\\cindex {\\cpindex}$/ +\cindexsub tex-src/texinfo.tex /^\\def\\cindexsub {\\begingroup\\obeylines\\cindexsub}$/ +\cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}%$/ +\cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}$/ +\clear tex-src/texinfo.tex /^\\def\\clear{\\parsearg\\clearxxx}$/ +\clearxxx tex-src/texinfo.tex /^\\def\\clearxxx #1{$/ +\code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}%$/ +\code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}$/ +\comment tex-src/texinfo.tex /^\\def\\comment{\\catcode 64=\\other \\catcode 123=\\othe/ +\commentxxx tex-src/texinfo.tex /^\\def\\commentxxx #1{\\catcode 64=0 \\catcode 123=1 \\c/ +\contents tex-src/texinfo.tex /^\\outer\\def\\contents{%$/ +\copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash copyright }%$/ +\copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash copyright}$/ +\cropmarks tex-src/texinfo.tex /^\\def\\cropmarks{\\let\\onepageout=\\croppageout }$/ +\croppageout tex-src/texinfo.tex /^\\def\\croppageout#1{\\hoffset=0pt % make sure this d/ +\ctl tex-src/texinfo.tex /^\\def\\ctl{{\\circle\\char'013\\hskip -6pt}}% 6pt from / +\ctr tex-src/texinfo.tex /^\\def\\ctr{{\\hskip 6pt\\circle\\char'010}}$/ +\ctrl tex-src/texinfo.tex /^\\def\\ctrl #1{{\\tt \\rawbackslash \\hat}#1}$/ +\defcodeindex tex-src/texinfo.tex /^\\def\\defcodeindex{\\parsearg\\newcodeindex}$/ +\defcv tex-src/texinfo.tex /^\\def\\defcv #1 {\\def\\defcvtype{#1}%$/ +\defcvarheader tex-src/texinfo.tex /^\\def\\defcvarheader #1#2#3{%$/ +\defcvx tex-src/texinfo.tex /^\\def\\defcvx #1 {\\errmessage{@defcvx in invalid con/ +\deffn tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/ +\deffnheader tex-src/texinfo.tex /^\\def\\deffnheader #1#2#3{\\doind {fn}{\\code{#2}}%$/ +\deffnx tex-src/texinfo.tex /^\\def\\deffnx #1 {\\errmessage{@deffnx in invalid con/ +\defindex tex-src/texinfo.tex /^\\def\\defindex{\\parsearg\\newindex}$/ +\defivar tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/ +\defivarheader tex-src/texinfo.tex /^\\def\\defivarheader #1#2#3{%$/ +\defivarx tex-src/texinfo.tex /^\\def\\defivarx #1 {\\errmessage{@defivarx in invalid/ +\defmac tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/ +\defmacheader tex-src/texinfo.tex /^\\def\\defmacheader #1#2{\\doind {fn}{\\code{#1}}% Mak/ +\defmacx tex-src/texinfo.tex /^\\def\\defmacx #1 {\\errmessage{@defmacx in invalid c/ +\defmethod tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/ +\defmethodheader tex-src/texinfo.tex /^\\def\\defmethodheader #1#2#3{%$/ +\defmethodx tex-src/texinfo.tex /^\\def\\defmethodx #1 {\\errmessage{@defmethodx in inv/ +\defmethparsebody tex-src/texinfo.tex /^\\def\\defmethparsebody #1#2#3#4 {\\begingroup\\inENV / +\defname tex-src/texinfo.tex /^\\def\\defname #1#2{%$/ +\defop tex-src/texinfo.tex /^\\def\\defop #1 {\\def\\defoptype{#1}%$/ +\defopheader tex-src/texinfo.tex /^\\def\\defopheader #1#2#3{%$/ +\defopparsebody tex-src/texinfo.tex /^\\def\\defopparsebody #1#2#3#4#5 {\\begingroup\\inENV / +\defopt tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/ +\defoptheader tex-src/texinfo.tex /^\\def\\defoptheader #1#2{\\doind {vr}{\\code{#1}}% Mak/ +\defoptx tex-src/texinfo.tex /^\\def\\defoptx #1 {\\errmessage{@defoptx in invalid c/ +\defopvarparsebody tex-src/texinfo.tex /^\\def\\defopvarparsebody #1#2#3#4#5 {\\begingroup\\inE/ +\defopx tex-src/texinfo.tex /^\\def\\defopx #1 {\\errmessage{@defopx in invalid con/ +\defparsebody tex-src/texinfo.tex /^\\def\\defparsebody #1#2#3{\\begingroup\\inENV% Enviro/ +\defspec tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/ +\defspecheader tex-src/texinfo.tex /^\\def\\defspecheader #1#2{\\doind {fn}{\\code{#1}}% Ma/ +\defspecx tex-src/texinfo.tex /^\\def\\defspecx #1 {\\errmessage{@defspecx in invalid/ +\deftp tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/ +\deftpargs tex-src/texinfo.tex /^\\def\\deftpargs #1{\\bf \\defvarargs{#1}}$/ +\deftpheader tex-src/texinfo.tex /^\\def\\deftpheader #1#2#3{\\doind {tp}{\\code{#2}}%$/ +\deftpx tex-src/texinfo.tex /^\\def\\deftpx #1 {\\errmessage{@deftpx in invalid con/ +\deftypefn tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/ +\deftypefnheader tex-src/texinfo.tex /^\\def\\deftypefnheader #1#2#3{\\deftypefnheaderx{#1}{/ +\deftypefnheaderx tex-src/texinfo.tex /^\\def\\deftypefnheaderx #1#2#3 #4\\relax{%$/ +\deftypefnx tex-src/texinfo.tex /^\\def\\deftypefnx #1 {\\errmessage{@deftypefnx in inv/ +\deftypefun tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/ +\deftypefunargs tex-src/texinfo.tex /^\\def\\deftypefunargs #1{%$/ +\deftypefunheader tex-src/texinfo.tex /^\\def\\deftypefunheader #1#2{\\deftypefunheaderx{#1}#/ +\deftypefunheaderx tex-src/texinfo.tex /^\\def\\deftypefunheaderx #1#2 #3\\relax{%$/ +\deftypeunx tex-src/texinfo.tex /^\\def\\deftypeunx #1 {\\errmessage{@deftypeunx in inv/ +\deftypevar tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/ +\deftypevarheader tex-src/texinfo.tex /^\\def\\deftypevarheader #1#2{%$/ +\deftypevarx tex-src/texinfo.tex /^\\def\\deftypevarx #1 {\\errmessage{@deftypevarx in i/ +\deftypevr tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/ +\deftypevrheader tex-src/texinfo.tex /^\\def\\deftypevrheader #1#2#3{\\doind {vr}{\\code{#3}}/ +\deftypevrx tex-src/texinfo.tex /^\\def\\deftypevrx #1 {\\errmessage{@deftypevrx in inv/ +\defun tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/ +\defunargs tex-src/texinfo.tex /^\\def\\defunargs #1{\\functionparens \\sl$/ +\defunheader tex-src/texinfo.tex /^\\def\\defunheader #1#2{\\doind {fn}{\\code{#1}}% Make/ +\defunx tex-src/texinfo.tex /^\\def\\defunx #1 {\\errmessage{@defunx in invalid con/ +\defvar tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/ +\defvarargs tex-src/texinfo.tex /^\\def\\defvarargs #1{\\normalparens #1%$/ +\defvarheader tex-src/texinfo.tex /^\\def\\defvarheader #1#2{\\doind {vr}{\\code{#1}}% Mak/ +\defvarparsebody tex-src/texinfo.tex /^\\def\\defvarparsebody #1#2#3{\\begingroup\\inENV% Env/ +\defvarx tex-src/texinfo.tex /^\\def\\defvarx #1 {\\errmessage{@defvarx in invalid c/ +\defvr tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/ +\defvrheader tex-src/texinfo.tex /^\\def\\defvrheader #1#2#3{\\doind {vr}{\\code{#2}}%$/ +\defvrparsebody tex-src/texinfo.tex /^\\def\\defvrparsebody #1#2#3#4 {\\begingroup\\inENV %$/ +\defvrx tex-src/texinfo.tex /^\\def\\defvrx #1 {\\errmessage{@defvrx in invalid con/ +\description tex-src/texinfo.tex /^\\def\\description{\\tablez{\\dontindex}{1}{}{}{}{}}$/ +\df tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/ +\dfn tex-src/texinfo.tex /^\\def\\dfn##1{\\realbackslash dfn {##1}}$/ +\direntry tex-src/texinfo.tex /^\\def\\direntry{\\begingroup\\direntryxxx}$/ +\direntryxxx tex-src/texinfo.tex /^\\long\\def\\direntryxxx #1\\end direntry{\\endgroup\\ig/ +\display tex-src/texinfo.tex /^\\def\\display{\\begingroup\\inENV %This group ends at/ +\dmn tex-src/texinfo.tex /^\\def\\dmn#1{\\thinspace #1}$/ +\dobreak tex-src/texinfo.tex /^\\def\\dobreak#1#2{\\par\\ifdim\\lastskip<#1\\removelast/ +\dochapentry tex-src/texinfo.tex /^\\def\\dochapentry#1#2{%$/ +\docodeindex tex-src/texinfo.tex /^\\def\\docodeindex#1{\\edef\\indexname{#1}\\parsearg\\si/ +\doind tex-src/texinfo.tex /^\\def\\doind #1#2{%$/ +\doindex tex-src/texinfo.tex /^\\def\\doindex#1{\\edef\\indexname{#1}\\parsearg\\single/ +\donoderef tex-src/texinfo.tex /^\\def\\donoderef{\\ifx\\lastnode\\relax\\else$/ +\dontindex tex-src/texinfo.tex /^\\def\\dontindex #1{}$/ +\dopageno tex-src/texinfo.tex /^\\def\\dopageno#1{{\\rm #1}}$/ +\doprintindex tex-src/texinfo.tex /^\\def\\doprintindex#1{%$/ +\dosecentry tex-src/texinfo.tex /^\\def\\dosecentry#1#2{%$/ +\dosetq tex-src/texinfo.tex /^\\def\\dosetq #1#2{{\\let\\folio=0 \\turnoffactive%$/ +\doshortpageno tex-src/texinfo.tex /^\\def\\doshortpageno#1{{\\rm #1}}$/ +\dosubind tex-src/texinfo.tex /^\\def\\dosubind #1#2#3{%$/ +\dosubsecentry tex-src/texinfo.tex /^\\def\\dosubsecentry#1#2{%$/ +\dosubsubsecentry tex-src/texinfo.tex /^\\def\\dosubsubsecentry#1#2{%$/ +\dots tex-src/texinfo.tex /^\\def\\dots{$\\ldots$}$/ +\dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots }%$/ +\dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots}$/ +\doublecolumnout tex-src/texinfo.tex /^\\def\\doublecolumnout{\\splittopskip=\\topskip \\split/ +\emph tex-src/texinfo.tex /^\\def\\emph##1{\\realbackslash emph {##1}}$/ +\end tex-src/texinfo.tex /^\\def\\end{\\parsearg\\endxxx}$/ +\enddoublecolumns tex-src/texinfo.tex /^\\def\\enddoublecolumns{\\output={\\balancecolumns}\\ej/ +\endxxx tex-src/texinfo.tex /^\\def\\endxxx #1{%$/ +\entry tex-src/texinfo.tex /^\\def\\entry #1#2{\\begingroup$/ +\enumerate tex-src/texinfo.tex /^\\def\\enumerate{\\parsearg\\enumeratezzz}$/ +\enumeratey tex-src/texinfo.tex /^\\def\\enumeratey #1 #2\\endenumeratey{%$/ +\enumeratezzz tex-src/texinfo.tex /^\\def\\enumeratezzz #1{\\enumeratey #1 \\endenumerate/ +\equiv tex-src/texinfo.tex /^\\def\\equiv{\\realbackslash equiv}$/ +\equiv tex-src/texinfo.tex /^\\def\\equiv{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/ +\error tex-src/texinfo.tex /^\\def\\error{\\leavevmode\\lower.7ex\\copy\\errorbox}$/ +\errorE tex-src/texinfo.tex /^\\def\\errorE#1{$/ +\evenfooting tex-src/texinfo.tex /^\\def\\evenfooting{\\parsearg\\evenfootingxxx}$/ +\evenheading tex-src/texinfo.tex /^\\def\\evenheading{\\parsearg\\evenheadingxxx}$/ +\everyfooting tex-src/texinfo.tex /^\\def\\everyfooting{\\parsearg\\everyfootingxxx}$/ +\everyheading tex-src/texinfo.tex /^\\def\\everyheading{\\parsearg\\everyheadingxxx}$/ +\ewbot tex-src/texinfo.tex /^\\def\\ewbot{\\vrule height0pt depth\\cornerthick widt/ +\ewtop tex-src/texinfo.tex /^\\def\\ewtop{\\vrule height\\cornerthick depth0pt widt/ +\exdent tex-src/texinfo.tex /^\\def\\exdent{\\parsearg\\exdentyyy}$/ +\exdentyyy tex-src/texinfo.tex /^\\def\\exdentyyy #1{{\\hfil\\break\\hbox{\\kern -\\exdent/ +\expansion tex-src/texinfo.tex /^\\def\\expansion{\\realbackslash expansion}$/ +\expansion tex-src/texinfo.tex /^\\def\\expansion{\\leavevmode\\raise.1ex\\hbox to 1em{\\/ +\file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}%$/ +\file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}$/ +\finalout tex-src/texinfo.tex /^\\def\\finalout{\\overfullrule=0pt}$/ +\findex tex-src/texinfo.tex /^\\def\\findex {\\fnindex}$/ +\finishtitlepage tex-src/texinfo.tex /^\\def\\finishtitlepage{%$/ +\flushcr tex-src/texinfo.tex /^\\def\\flushcr{\\ifx\\par\\lisppar \\def\\next##1{}\\else / +\flushleft tex-src/texinfo.tex /^\\def\\flushleft{%$/ +\flushright tex-src/texinfo.tex /^\\def\\flushright{%$/ +\fnitemindex tex-src/texinfo.tex /^\\def\\fnitemindex #1{\\doind {fn}{\\code{#1}}}%$/ +\format tex-src/texinfo.tex /^\\def\\format{\\begingroup\\inENV %This group ends at / +\frenchspacing tex-src/texinfo.tex /^\\def\\frenchspacing{\\sfcode46=1000 \\sfcode63=1000 \\/ +\ftable tex-src/texinfo.tex /^\\def\\ftable{\\begingroup\\inENV\\obeylines\\obeyspaces/ +\gloggingall tex-src/texinfo.tex /^\\def\\gloggingall{\\begingroup \\globaldefs = 1 \\logg/ +\group tex-src/texinfo.tex /^\\def\\group{\\begingroup$/ +\gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}%$/ +\gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}$/ +\hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}%$/ +\hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}$/ +\heading tex-src/texinfo.tex /^\\def\\heading{\\parsearg\\secheadingi}$/ +\headings tex-src/texinfo.tex /^\\def\\headings #1 {\\csname HEADINGS#1\\endcsname}$/ +\i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}%$/ +\i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}$/ +\ifclear tex-src/texinfo.tex /^\\def\\ifclear{\\begingroup\\ignoresections\\parsearg\\i/ +\ifclearfail tex-src/texinfo.tex /^\\def\\ifclearfail{\\begingroup\\ignoresections\\ifclea/ +\ifclearfailxxx tex-src/texinfo.tex /^\\long\\def\\ifclearfailxxx #1\\end ifclear{\\endgroup\\/ +\ifclearxxx tex-src/texinfo.tex /^\\def\\ifclearxxx #1{\\endgroup$/ +\ifinfo tex-src/texinfo.tex /^\\def\\ifinfo{\\begingroup\\ignoresections\\ifinfoxxx}$/ +\ifinfoxxx tex-src/texinfo.tex /^\\long\\def\\ifinfoxxx #1\\end ifinfo{\\endgroup\\ignore/ +\ifset tex-src/texinfo.tex /^\\def\\ifset{\\begingroup\\ignoresections\\parsearg\\ifs/ +\ifsetfail tex-src/texinfo.tex /^\\def\\ifsetfail{\\begingroup\\ignoresections\\ifsetfai/ +\ifsetfailxxx tex-src/texinfo.tex /^\\long\\def\\ifsetfailxxx #1\\end ifset{\\endgroup\\igno/ +\ifsetxxx tex-src/texinfo.tex /^\\def\\ifsetxxx #1{\\endgroup$/ +\iftex tex-src/texinfo.tex /^\\def\\iftex{}$/ +\ifusingtt tex-src/texinfo.tex /^\\def\\ifusingtt#1#2{\\ifdim \\fontdimen3\\the\\font=0pt/ +\ignore tex-src/texinfo.tex /^\\def\\ignore{\\begingroup\\ignoresections$/ +\ignoresections tex-src/texinfo.tex /^\\def\\ignoresections{%$/ +\ignorexxx tex-src/texinfo.tex /^\\long\\def\\ignorexxx #1\\end ignore{\\endgroup\\ignore/ +\ii tex-src/texinfo.tex /^\\def\\ii#1{{\\it #1}} % italic font$/ +\inENV tex-src/texinfo.tex /^\\newif\\ifENV \\ENVfalse \\def\\inENV{\\ifENV\\relax\\els/ +\include tex-src/texinfo.tex /^\\def\\include{\\parsearg\\includezzz}$/ +\includezzz tex-src/texinfo.tex /^\\def\\includezzz #1{{\\def\\thisfile{#1}\\input #1$/ +\indexbackslash tex-src/texinfo.tex /^ \\def\\indexbackslash{\\rawbackslashxx}$/ +\indexdotfill tex-src/texinfo.tex /^\\def\\indexdotfill{\\cleaders$/ +\indexdummies tex-src/texinfo.tex /^\\def\\indexdummies{%$/ +\indexdummydots tex-src/texinfo.tex /^\\def\\indexdummydots{...}$/ +\indexdummyfont tex-src/texinfo.tex /^\\def\\indexdummyfont#1{#1}$/ +\indexdummytex tex-src/texinfo.tex /^\\def\\indexdummytex{TeX}$/ +\indexfonts tex-src/texinfo.tex /^\\def\\indexfonts{%$/ +\indexnofonts tex-src/texinfo.tex /^\\def\\indexnofonts{%$/ +\infoappendix tex-src/texinfo.tex /^\\def\\infoappendix{\\parsearg\\appendixzzz}$/ +\infoappendixsec tex-src/texinfo.tex /^\\def\\infoappendixsec{\\parsearg\\appendixseczzz}$/ +\infoappendixsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsec{\\parsearg\\appendixsubseczz/ +\infoappendixsubsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsubsec{\\parsearg\\appendixsubsu/ +\infochapter tex-src/texinfo.tex /^\\def\\infochapter{\\parsearg\\chapterzzz}$/ +\inforef tex-src/texinfo.tex /^\\def\\inforef #1{\\inforefzzz #1,,,,**}$/ +\inforefzzz tex-src/texinfo.tex /^\\def\\inforefzzz #1,#2,#3,#4**{See Info file \\file{/ +\infosection tex-src/texinfo.tex /^\\def\\infosection{\\parsearg\\sectionzzz}$/ +\infosubsection tex-src/texinfo.tex /^\\def\\infosubsection{\\parsearg\\subsectionzzz}$/ +\infosubsubsection tex-src/texinfo.tex /^\\def\\infosubsubsection{\\parsearg\\subsubsectionzzz}/ +\infotop tex-src/texinfo.tex /^\\def\\infotop{\\parsearg\\unnumberedzzz}$/ +\infounnumbered tex-src/texinfo.tex /^\\def\\infounnumbered{\\parsearg\\unnumberedzzz}$/ +\infounnumberedsec tex-src/texinfo.tex /^\\def\\infounnumberedsec{\\parsearg\\unnumberedseczzz}/ +\infounnumberedsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsec{\\parsearg\\unnumberedsubs/ +\infounnumberedsubsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsubsec{\\parsearg\\unnumbereds/ +\initial tex-src/texinfo.tex /^\\def\\initial #1{%$/ +\internalBitem tex-src/texinfo.tex /^\\def\\internalBitem{\\smallbreak \\parsearg\\itemzzz}$/ +\internalBitemx tex-src/texinfo.tex /^\\def\\internalBitemx{\\par \\parsearg\\itemzzz}$/ +\internalBkitem tex-src/texinfo.tex /^\\def\\internalBkitem{\\smallbreak \\parsearg\\kitemzzz/ +\internalBkitemx tex-src/texinfo.tex /^\\def\\internalBkitemx{\\par \\parsearg\\kitemzzz}$/ +\internalBxitem tex-src/texinfo.tex /^\\def\\internalBxitem "#1"{\\def\\xitemsubtopix{#1} \\s/ +\internalBxitemx tex-src/texinfo.tex /^\\def\\internalBxitemx "#1"{\\def\\xitemsubtopix{#1} \\/ +\internalsetq tex-src/texinfo.tex /^\\def\\internalsetq #1#2{'xrdef {#1}{\\csname #2\\endc/ +\item tex-src/texinfo.tex /^\\def\\item{\\errmessage{@item while not in a table}}/ +\itemcontents tex-src/texinfo.tex /^\\def\\itemcontents{#1}%$/ +\itemfont tex-src/texinfo.tex /^\\def\\itemfont{#2}%$/ +\itemize tex-src/texinfo.tex /^\\def\\itemize{\\parsearg\\itemizezzz}$/ +\itemizeitem tex-src/texinfo.tex /^\\def\\itemizeitem{%$/ +\itemizey tex-src/texinfo.tex /^\\def\\itemizey #1#2{%$/ +\itemizezzz tex-src/texinfo.tex /^\\def\\itemizezzz #1{%$/ +\itemx tex-src/texinfo.tex /^\\def\\itemx{\\errmessage{@itemx while not in a table/ +\itemzzz tex-src/texinfo.tex /^\\def\\itemzzz #1{\\begingroup %$/ +\kbd tex-src/texinfo.tex /^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/ +\kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}%$/ +\kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}$/ +\kbdfoo tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/ +\key tex-src/texinfo.tex /^\\def\\key #1{{\\tt \\exhyphenpenalty=10000\\uppercase{/ +\key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}%$/ +\key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}$/ +\kindex tex-src/texinfo.tex /^\\def\\kindex {\\kyindex}$/ +\kitem tex-src/texinfo.tex /^\\def\\kitem{\\errmessage{@kitem while not in a table/ +\kitemx tex-src/texinfo.tex /^\\def\\kitemx{\\errmessage{@kitemx while not in a tab/ +\kitemzzz tex-src/texinfo.tex /^\\def\\kitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/ +\l tex-src/texinfo.tex /^\\def\\l#1{{\\li #1}\\null} % $/ +\labelspace tex-src/texinfo.tex /^\\def\\labelspace{\\hskip1em \\relax}$/ +\lbrb tex-src/texinfo.tex /^\\def\\lbrb{{\\bf\\char`\\[}} \\def\\rbrb{{\\bf\\char`\\]}}$/ +\less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}%$/ +\less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}$/ +\linenumber tex-src/texinfo.tex /^ \\def\\linenumber{\\the\\inputlineno:\\space}$/ +\lisp tex-src/texinfo.tex /^\\def\\lisp{\\aboveenvbreak$/ +\loggingall tex-src/texinfo.tex /^\\def\\loggingall{\\tracingcommands2 \\tracingstats2 $/ +\losespace tex-src/texinfo.tex /^\\def\\losespace #1{#1}$/ +\lowercaseenumerate tex-src/texinfo.tex /^\\def\\lowercaseenumerate{%$/ +\lvvmode tex-src/texinfo.tex /^\\def\\lvvmode{\\vbox to 0pt{}}$/ +\majorheading tex-src/texinfo.tex /^\\def\\majorheading{\\parsearg\\majorheadingzzz}$/ +\majorheadingzzz tex-src/texinfo.tex /^\\def\\majorheadingzzz #1{%$/ +\math tex-src/texinfo.tex /^\\def\\math#1{\\implicitmath #1\\implicitmath}$/ +\menu tex-src/texinfo.tex /^\\long\\def\\menu #1\\end menu{}$/ +\minus tex-src/texinfo.tex /^\\def\\minus{$-$}$/ +\mylbrace tex-src/texinfo.tex /^\\def\\mylbrace {{\\tt \\char '173}}$/ +\myrbrace tex-src/texinfo.tex /^\\def\\myrbrace {{\\tt \\char '175}}$/ +\need tex-src/texinfo.tex /^\\def\\need{\\parsearg\\needx}$/ +\needx tex-src/texinfo.tex /^\\def\\needx#1{%$/ +\newcodeindex tex-src/texinfo.tex /^\\def\\newcodeindex #1{$/ +\newindex tex-src/texinfo.tex /^\\def\\newindex #1{$/ +\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/ +\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/ +\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/ +\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/ +\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/ +\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/ +\nm tex-src/testenv.tex /^\\newcommand{\\nm}[2]{\\nomenclature{#1}{#2}}$/ +\node tex-src/texinfo.tex /^\\def\\node{\\ENVcheck\\parsearg\\nodezzz}$/ +\nodexxx[ tex-src/texinfo.tex /^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/ +\nodezzz tex-src/texinfo.tex /^\\def\\nodezzz#1{\\nodexxx [#1,]}$/ +\nofillexdent tex-src/texinfo.tex /^\\def\\nofillexdent{\\parsearg\\nofillexdentyyy}$/ +\nofillexdentyyy tex-src/texinfo.tex /^\\def\\nofillexdentyyy #1{{\\advance \\leftskip by -\\e/ +\normalbackslash tex-src/texinfo.tex /^\\def\\normalbackslash{{\\tt\\rawbackslashxx}}$/ +\normalcaret tex-src/texinfo.tex /^\\def\\normalcaret{^}$/ +\normaldoublequote tex-src/texinfo.tex /^\\def\\normaldoublequote{"}$/ +\normalgreater tex-src/texinfo.tex /^\\def\\normalgreater{>}$/ +\normalless tex-src/texinfo.tex /^\\def\\normalless{<}$/ +\normalplus tex-src/texinfo.tex /^\\def\\normalplus{+}$/ +\normaltilde tex-src/texinfo.tex /^\\def\\normaltilde{~}$/ +\normalunderscore tex-src/texinfo.tex /^\\def\\normalunderscore{_}$/ +\normalverticalbar tex-src/texinfo.tex /^\\def\\normalverticalbar{|}$/ +\nsbot tex-src/texinfo.tex /^\\def\\nsbot{\\vbox$/ +\nstop tex-src/texinfo.tex /^\\def\\nstop{\\vbox$/ +\numberedsec tex-src/texinfo.tex /^\\outer\\def\\numberedsec{\\parsearg\\seczzz}$/ +\numberedsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsec{\\parsearg\\numberedsubsec/ +\numberedsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubseczzz #1{\\seccheck{subsection}%$/ +\numberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsubsec{\\parsearg\\numberedsub/ +\numberedsubsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubsubseczzz #1{\\seccheck{subsubsecti/ +\numericenumerate tex-src/texinfo.tex /^\\def\\numericenumerate{%$/ +\oddfooting tex-src/texinfo.tex /^\\def\\oddfooting{\\parsearg\\oddfootingxxx}$/ +\oddheading tex-src/texinfo.tex /^\\def\\oddheading{\\parsearg\\oddheadingxxx}$/ +\onepageout tex-src/texinfo.tex /^\\def\\onepageout#1{\\hoffset=\\normaloffset$/ +\opencontents tex-src/texinfo.tex /^\\def\\opencontents{\\openout \\contentsfile = \\jobnam/ +\openindices tex-src/texinfo.tex /^\\def\\openindices{%$/ +\opnr tex-src/texinfo.tex /^\\def\\opnr{{\\sf\\char`\\(}} \\def\\clnr{{\\sf\\char`\\)}} / +\page tex-src/texinfo.tex /^\\def\\page{\\par\\vfill\\supereject}$/ +\page tex-src/texinfo.tex /^ \\def\\page{%$/ +\pagebody tex-src/texinfo.tex /^\\def\\pagebody#1{\\vbox to\\pageheight{\\boxmaxdepth=\\/ +\pagesofar tex-src/texinfo.tex /^\\def\\pagesofar{\\unvbox\\partialpage %$/ +\parsearg tex-src/texinfo.tex /^\\def\\parsearg #1{\\let\\next=#1\\begingroup\\obeylines/ +\parseargline tex-src/texinfo.tex /^\\def\\parseargline{\\begingroup \\obeylines \\parsearg/ +\parseargx tex-src/texinfo.tex /^\\def\\parseargx{%$/ +\pindex tex-src/texinfo.tex /^\\def\\pindex {\\pgindex}$/ +\plainsecheading tex-src/texinfo.tex /^\\def\\plainsecheading #1{\\secheadingi {#1}}$/ +\point tex-src/texinfo.tex /^\\def\\point{$\\star$}$/ +\primary tex-src/texinfo.tex /^\\def\\primary #1{\\line{#1\\hfil}}$/ +\print tex-src/texinfo.tex /^\\def\\print{\\realbackslash print}$/ +\print tex-src/texinfo.tex /^\\def\\print{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/ +\printedmanual tex-src/texinfo.tex /^\\def\\printedmanual{\\ignorespaces #5}%$/ +\printedmanual tex-src/texinfo.tex /^section ``\\printednodename'' in \\cite{\\printedmanu/ +\printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #3}%$/ +\printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #1}%$/ +\printindex tex-src/texinfo.tex /^\\def\\printindex{\\parsearg\\doprintindex}$/ +\pxref tex-src/texinfo.tex /^\\def\\pxref#1{see \\xrefX[#1,,,,,,,]}$/ +\quotation tex-src/texinfo.tex /^\\def\\quotation{%$/ +\r tex-src/texinfo.tex /^\\def\\r#1{{\\rm #1}} % roman font$/ +\r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}%$/ +\r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}$/ +\rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/ +\rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}%$/ +\readauxfile tex-src/texinfo.tex /^\\def\\readauxfile{%$/ +\ref tex-src/texinfo.tex /^\\def\\ref#1{\\xrefX[#1,,,,,,,]}$/ +\refx tex-src/texinfo.tex /^\\def\\refx#1#2{%$/ +\resetmathfonts tex-src/texinfo.tex /^\\def\\resetmathfonts{%$/ +\result tex-src/texinfo.tex /^\\def\\result{\\realbackslash result}$/ +\result tex-src/texinfo.tex /^\\def\\result{\\leavevmode\\raise.15ex\\hbox to 1em{\\hf/ +\rm tex-src/texinfo.tex /^\\def\\rm{\\realbackslash rm }%$/ +\samp tex-src/texinfo.tex /^\\def\\samp #1{`\\tclose{#1}'\\null}$/ +\samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}%$/ +\samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}$/ +\sc tex-src/texinfo.tex /^\\def\\sc#1{{\\smallcaps#1}} % smallcaps font$/ +\seccheck tex-src/texinfo.tex /^\\def\\seccheck#1{\\if \\pageno<0 %$/ +\secentry tex-src/texinfo.tex /^ \\def\\secentry ##1##2##3##4{}$/ +\secentry tex-src/texinfo.tex /^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/ +\secentryfonts tex-src/texinfo.tex /^\\def\\secentryfonts{\\textfonts}$/ +\secfonts tex-src/texinfo.tex /^\\def\\secfonts{%$/ +\secheading tex-src/texinfo.tex /^\\def\\secheading #1#2#3{\\secheadingi {#2.#3\\enspace/ +\secheadingbreak tex-src/texinfo.tex /^\\def\\secheadingbreak{\\dobreak \\secheadingskip {-10/ +\secheadingi tex-src/texinfo.tex /^\\def\\secheadingi #1{{\\advance \\secheadingskip by \\/ +\secondary tex-src/texinfo.tex /^\\def\\secondary #1#2{$/ +\seczzz tex-src/texinfo.tex /^\\def\\seczzz #1{\\seccheck{section}%$/ +\set tex-src/texinfo.tex /^\\def\\set{\\parsearg\\setxxx}$/ +\setchapternewpage tex-src/texinfo.tex /^\\def\\setchapternewpage #1 {\\csname CHAPPAG#1\\endcs/ +\setchapterstyle tex-src/texinfo.tex /^\\def\\setchapterstyle #1 {\\csname CHAPF#1\\endcsname/ +\setdeffont tex-src/texinfo.tex /^\\def\\setdeffont #1 {\\csname DEF#1\\endcsname}$/ +\setfilename tex-src/texinfo.tex /^\\def\\setfilename{%$/ +\setref tex-src/texinfo.tex /^\\def\\setref#1{%$/ +\settitle tex-src/texinfo.tex /^\\def\\settitle{\\parsearg\\settitlezzz}$/ +\settitlezzz tex-src/texinfo.tex /^\\def\\settitlezzz #1{\\gdef\\thistitle{#1}}$/ +\setxxx tex-src/texinfo.tex /^\\def\\setxxx #1{$/ +\sf tex-src/texinfo.tex /^\\def\\sf{\\fam=\\sffam \\tensf}$/ +\sf tex-src/texinfo.tex /^\\def\\sf{\\realbackslash sf}%$/ +\shortchapentry tex-src/texinfo.tex /^\\def\\shortchapentry#1#2#3{%$/ +\shortunnumberedentry tex-src/texinfo.tex /^\\def\\shortunnumberedentry#1#2{%$/ +\singlecodeindexer tex-src/texinfo.tex /^\\def\\singlecodeindexer #1{\\doind{\\indexname}{\\code/ +\singleindexer tex-src/texinfo.tex /^\\def\\singleindexer #1{\\doind{\\indexname}{#1}}$/ +\singlespace tex-src/texinfo.tex /^\\def\\singlespace{%$/ +\sl tex-src/texinfo.tex /^\\def\\sl{\\realbackslash sl }%$/ +\smallbook tex-src/texinfo.tex /^\\def\\smallbook{$/ +\smalllispx tex-src/texinfo.tex /^\\def\\smalllispx{\\aboveenvbreak\\begingroup\\inENV$/ +\smartitalic tex-src/texinfo.tex /^\\def\\smartitalic#1{{\\sl #1}\\futurelet\\next\\smartit/ +\smartitalicx tex-src/texinfo.tex /^\\def\\smartitalicx{\\ifx\\next,\\else\\ifx\\next-\\else\\i/ +\sp tex-src/texinfo.tex /^\\def\\sp{\\parsearg\\spxxx}$/ +\splitoff tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/ +\spxxx tex-src/texinfo.tex /^\\def\\spxxx #1{\\par \\vskip #1\\baselineskip}$/ +\startcontents tex-src/texinfo.tex /^\\def\\startcontents#1{%$/ +\startenumeration tex-src/texinfo.tex /^\\def\\startenumeration#1{%$/ +\subheading tex-src/texinfo.tex /^\\def\\subheading{\\parsearg\\subsecheadingi}$/ +\subsecentry tex-src/texinfo.tex /^ \\def\\subsecentry ##1##2##3##4##5{}$/ +\subsecentry tex-src/texinfo.tex /^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/ +\subsecfonts tex-src/texinfo.tex /^\\def\\subsecfonts{%$/ +\subsecheading tex-src/texinfo.tex /^\\def\\subsecheading #1#2#3#4{\\subsecheadingi {#2.#3/ +\subsecheadingbreak tex-src/texinfo.tex /^\\def\\subsecheadingbreak{\\dobreak \\subsecheadingski/ +\subsecheadingi tex-src/texinfo.tex /^\\def\\subsecheadingi #1{{\\advance \\subsecheadingski/ +\subsubheading tex-src/texinfo.tex /^\\def\\subsubheading{\\parsearg\\subsubsecheadingi}$/ +\subsubsecentry tex-src/texinfo.tex /^ \\def\\subsubsecentry ##1##2##3##4##5##6{}$/ +\subsubsecentry tex-src/texinfo.tex /^\\def\\subsubsecentry#1#2#3#4#5#6{%$/ +\subsubsecfonts tex-src/texinfo.tex /^\\def\\subsubsecfonts{\\subsecfonts} % Maybe this sho/ +\subsubsecheading tex-src/texinfo.tex /^\\def\\subsubsecheading #1#2#3#4#5{\\subsubsecheading/ +\subsubsecheadingi tex-src/texinfo.tex /^\\def\\subsubsecheadingi #1{{\\advance \\subsecheading/ +\subtitle tex-src/texinfo.tex /^ \\def\\subtitle{\\parsearg\\subtitlezzz}%$/ +\subtitlefont tex-src/texinfo.tex /^ \\def\\subtitlefont{\\subtitlerm \\normalbaselinesk/ +\subtitlezzz tex-src/texinfo.tex /^ \\def\\subtitlezzz##1{{\\subtitlefont \\rightline{#/ +\summarycontents tex-src/texinfo.tex /^\\outer\\def\\summarycontents{%$/ +\supereject tex-src/texinfo.tex /^\\def\\supereject{\\par\\penalty -20000\\footnoteno =0 / +\syncodeindex tex-src/texinfo.tex /^\\def\\syncodeindex #1 #2 {%$/ +\synindex tex-src/texinfo.tex /^\\def\\synindex #1 #2 {%$/ +\t tex-src/texinfo.tex /^\\def\\t#1{{\\tt \\exhyphenpenalty=10000\\rawbackslash / +\t tex-src/texinfo.tex /^\\def\\t##1{\\realbackslash r {##1}}%$/ +\table tex-src/texinfo.tex /^\\def\\table{\\begingroup\\inENV\\obeylines\\obeyspaces\\/ +\tablez tex-src/texinfo.tex /^\\def\\tablez #1#2#3#4#5#6{%$/ +\tclose tex-src/texinfo.tex /^\\def\\tclose#1{{\\rm \\tcloserm=\\fontdimen2\\font \\tt / +\tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}%$/ +\tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}$/ +\tex tex-src/texinfo.tex /^\\def\\tex{\\begingroup$/ +\texinfoversion tex-src/texinfo.tex /^\\def\\texinfoversion{2.73}$/ +\textfonts tex-src/texinfo.tex /^\\def\\textfonts{%$/ +\thearg tex-src/texinfo.tex /^ \\def\\thearg{#1}%$/ +\thearg tex-src/texinfo.tex /^ \\ifx\\thearg\\empty \\def\\thearg{1}\\fi$/ +\thischapter tex-src/texinfo.tex /^\\def\\thischapter{} \\def\\thissection{}$/ +\thischapter tex-src/texinfo.tex /^ \\unnumbchapmacro{#1}\\def\\thischapter{}%$/ +\thischaptername tex-src/texinfo.tex /^\\def\\thischaptername{No Chapter Title}$/ +\thisfile tex-src/texinfo.tex /^\\def\\thisfile{}$/ +\thistitle tex-src/texinfo.tex /^\\def\\thistitle{No Title}$/ +\tie tex-src/texinfo.tex /^\\def\\tie{\\penalty 10000\\ } % Save plain tex de/ +\tindex tex-src/texinfo.tex /^\\def\\tindex {\\tpindex}$/ +\title tex-src/texinfo.tex /^ \\def\\title{\\parsearg\\titlezzz}%$/ +\titlefont tex-src/texinfo.tex /^\\def\\titlefont#1{{\\titlerm #1}}$/ +\titlepage tex-src/texinfo.tex /^\\def\\titlepage{\\begingroup \\parindent=0pt \\textfon/ +\titlezzz tex-src/texinfo.tex /^ \\def\\titlezzz##1{\\leftline{\\titlefont{##1}}$/ +\today tex-src/texinfo.tex /^\\def\\today{\\number\\day\\space$/ +\top tex-src/texinfo.tex /^\\outer\\def\\top{\\parsearg\\unnumberedzzz}$/ +\tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}%$/ +\tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}$/ +\turnoffactive tex-src/texinfo.tex /^\\def\\turnoffactive{\\let"=\\normaldoublequote$/ +\unnchfopen tex-src/texinfo.tex /^\\def\\unnchfopen #1{%$/ +\unnchfplain tex-src/texinfo.tex /^\\def\\unnchfplain #1{%$/ +\unnumbchapentry tex-src/texinfo.tex /^\\def\\unnumbchapentry#1#2{\\dochapentry{#1}{#2}}$/ +\unnumbered tex-src/texinfo.tex /^\\outer\\def\\unnumbered{\\parsearg\\unnumberedzzz}$/ +\unnumberedsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsec{\\parsearg\\unnumberedseczz/ +\unnumberedseczzz tex-src/texinfo.tex /^\\def\\unnumberedseczzz #1{\\seccheck{unnumberedsec}%/ +\unnumberedsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsec{\\parsearg\\unnumberedsu/ +\unnumberedsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubseczzz #1{\\seccheck{unnumberedsu/ +\unnumberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsubsec{\\parsearg\\unnumbere/ +\unnumberedsubsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubsubseczzz #1{\\seccheck{unnumbere/ +\unnumberedzzz tex-src/texinfo.tex /^\\def\\unnumberedzzz #1{\\seccheck{unnumbered}%$/ +\unnumbnoderef tex-src/texinfo.tex /^\\def\\unnumbnoderef{\\ifx\\lastnode\\relax\\else$/ +\unnumbsecentry tex-src/texinfo.tex /^ \\def\\unnumbsecentry ##1##2{}$/ +\unnumbsecentry tex-src/texinfo.tex /^\\def\\unnumbsecentry#1#2{\\dosecentry{#1}{#2}}$/ +\unnumbsetref tex-src/texinfo.tex /^\\def\\unnumbsetref#1{%$/ +\unnumbsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsecentry ##1##2{}$/ +\unnumbsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsecentry#1#2{\\dosubsecentry{#1}{#2}}/ +\unnumbsubsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsubsecentry ##1##2{}$/ +\unnumbsubsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsubsecentry#1#2{\\dosubsubsecentry{#1/ +\uppercaseenumerate tex-src/texinfo.tex /^\\def\\uppercaseenumerate{%$/ +\var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}%$/ +\var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}$/ +\vindex tex-src/texinfo.tex /^\\def\\vindex {\\vrindex}$/ +\vritemindex tex-src/texinfo.tex /^\\def\\vritemindex #1{\\doind {vr}{\\code{#1}}}%$/ +\vtable tex-src/texinfo.tex /^\\def\\vtable{\\begingroup\\inENV\\obeylines\\obeyspaces/ +\w tex-src/texinfo.tex /^\\def\\w#1{\\leavevmode\\hbox{#1}}$/ +\w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w }%$/ +\w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w}$/ +\xitem tex-src/texinfo.tex /^\\def\\xitem{\\errmessage{@xitem while not in a table/ +\xitemx tex-src/texinfo.tex /^\\def\\xitemx{\\errmessage{@xitemx while not in a tab/ +\xitemzzz tex-src/texinfo.tex /^\\def\\xitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/ +\xkey tex-src/texinfo.tex /^\\def\\xkey{\\key}$/ +\xrdef tex-src/texinfo.tex /^\\def\\xrdef #1#2{$/ +\xref tex-src/texinfo.tex /^\\def\\xref#1{See \\xrefX[#1,,,,,,,]}$/ +\xrefX[ tex-src/texinfo.tex /^\\def\\xrefX[#1,#2,#3,#4,#5,#6]{\\begingroup%$/ +^ tex-src/texinfo.tex /^\\def^{{\\tt \\hat}}$/ +_ tex-src/texinfo.tex /^\\def_{\\ifusingtt\\normalunderscore\\_}$/ +_GETOPT_H c-src/getopt.h 19 +_GNU_SOURCE c-src/etags.c 94 +_REGEX_H c-src/emacs/src/regex.h 21 +_RE_SYNTAX_POSIX_COMMON c-src/emacs/src/regex.h 221 +_Restrict_ c-src/emacs/src/regex.h 540 +_Restrict_ c-src/emacs/src/regex.h 542 +_Restrict_ c-src/emacs/src/regex.h 544 +_Restrict_arr_ c-src/emacs/src/regex.h 555 +_Restrict_arr_ c-src/emacs/src/regex.h 557 +_UCHAR_T c-src/emacs/src/lisp.h 2423 +__COLORS cp-src/screen.hpp 9 +__default_morecore c-src/emacs/src/gmalloc.c /^__default_morecore (ptrdiff_t increment)$/ +__init__ pyt-src/server.py /^ def __init__(self):$/ +__init__ pyt-src/server.py /^ def __init__(self):$/ +__init__ pyt-src/server.py /^ def __init__(self):$/ +__init__ pyt-src/server.py /^ def __init__(self, Master, text, textvar, widt/ +__init__ pyt-src/server.py /^ def __init__(self, newlegend, list, editor, ma/ +__init__ pyt-src/server.py /^ def __init__(self, host, sitelist, master=None/ +__init__ pyt-src/server.py /^ def __init__(self, user, userlist, master=None/ +__init__ pyt-src/server.py /^ def __init__(self, master=None):$/ +__ip c.c 159 +__libc_atexit c-src/exit.c 30 +__libc_atexit c-src/exit.strange_suffix 30 +__malloc_extra_blocks c-src/emacs/src/gmalloc.c 381 +__malloc_initialize c-src/emacs/src/gmalloc.c /^__malloc_initialize (void)$/ +__malloc_initialized c-src/emacs/src/gmalloc.c 379 +__repr__ pyt-src/server.py /^ def __repr__(self):$/ +__repr__ pyt-src/server.py /^ def __repr__(self):$/ +__repr__ pyt-src/server.py /^ def __repr__(self):$/ +__sbrk c-src/emacs/src/gmalloc.c 1513 +__str__ pyt-src/server.py /^ def __str__(self):$/ +__str__ pyt-src/server.py /^ def __str__(self):$/ +__str__ pyt-src/server.py /^ def __str__(self):$/ +__up c.c 160 +_aligned_blocks c-src/emacs/src/gmalloc.c 1004 +_aligned_blocks_mutex c-src/emacs/src/gmalloc.c 518 +_bar? ruby-src/test1.ru /^ def self._bar?(abc)$/ +_bytes_free c-src/emacs/src/gmalloc.c 376 +_bytes_used c-src/emacs/src/gmalloc.c 374 +_chunks_free c-src/emacs/src/gmalloc.c 375 +_chunks_used c-src/emacs/src/gmalloc.c 373 +_fraghead c-src/emacs/src/gmalloc.c 370 +_free c-src/emacs/src/gmalloc.c /^_free (void *ptr)$/ +_free_internal c-src/emacs/src/gmalloc.c /^_free_internal (void *ptr)$/ +_free_internal_nolock c-src/emacs/src/gmalloc.c /^_free_internal_nolock (void *ptr)$/ +_heapbase c-src/emacs/src/gmalloc.c 355 +_heapindex c-src/emacs/src/gmalloc.c 364 +_heapinfo c-src/emacs/src/gmalloc.c 358 +_heaplimit c-src/emacs/src/gmalloc.c 367 +_malloc c-src/emacs/src/gmalloc.c /^_malloc (size_t size)$/ +_malloc_internal c-src/emacs/src/gmalloc.c /^_malloc_internal (size_t size)$/ +_malloc_internal_nolock c-src/emacs/src/gmalloc.c /^_malloc_internal_nolock (size_t size)$/ +_malloc_mutex c-src/emacs/src/gmalloc.c 517 +_malloc_thread_enabled_p c-src/emacs/src/gmalloc.c 519 +_realloc c-src/emacs/src/gmalloc.c /^_realloc (void *ptr, size_t size)$/ +_realloc_internal c-src/emacs/src/gmalloc.c /^_realloc_internal (void *ptr, size_t size)$/ +_realloc_internal_nolock c-src/emacs/src/gmalloc.c /^_realloc_internal_nolock (void *ptr, size_t size)$/ +` ruby-src/test.rb /^ def `(command)$/ +a c.c 152 +a c.c 180 +a c.c /^a()$/ +a c.c /^a ()$/ +a c-src/h.h 40 +a c-src/h.h 103 +a cp-src/c.C 132 +a ruby-src/test1.ru /^ def a()$/ +a-forth-constant! forth-src/test-forth.fth /^99 constant a-forth-constant!$/ +a-forth-value? forth-src/test-forth.fth /^55 value a-forth-value?$/ +a-forth-word forth-src/test-forth.fth /^: a-forth-word ( a b c -- a*b+c ) + * ;$/ +a-forth-word forth-src/test-forth.fth /^: a-forth-word ( a b c -- )$/ +a0 c-src/emacs/src/lisp.h /^ Lisp_Object (*a0) (void);$/ +a1 c-src/emacs/src/lisp.h /^ Lisp_Object (*a1) (Lisp_Object);$/ +a2 c-src/emacs/src/lisp.h /^ Lisp_Object (*a2) (Lisp_Object, Lisp_Object)/ +a3 c-src/emacs/src/lisp.h /^ Lisp_Object (*a3) (Lisp_Object, Lisp_Object,/ +a4 c-src/emacs/src/lisp.h /^ Lisp_Object (*a4) (Lisp_Object, Lisp_Object,/ +a5 c-src/emacs/src/lisp.h /^ Lisp_Object (*a5) (Lisp_Object, Lisp_Object,/ +a6 c-src/emacs/src/lisp.h /^ Lisp_Object (*a6) (Lisp_Object, Lisp_Object,/ +a7 c-src/emacs/src/lisp.h /^ Lisp_Object (*a7) (Lisp_Object, Lisp_Object,/ +a8 c-src/emacs/src/lisp.h /^ Lisp_Object (*a8) (Lisp_Object, Lisp_Object,/ +aMANY c-src/emacs/src/lisp.h /^ Lisp_Object (*aMANY) (ptrdiff_t, Lisp_Object/ +aUNEVALLED c-src/emacs/src/lisp.h /^ Lisp_Object (*aUNEVALLED) (Lisp_Object args)/ +aa c.c 269 +aa c.c 279 +aaa c.c 249 +aaa c.c 269 +aaaaaa c-src/h.h 111 +abbrev-expansion c-src/abbrev.c /^DEFUN ("abbrev-expansion", Fabbrev_expansion, Sabb/ +abbrev-symbol c-src/abbrev.c /^DEFUN ("abbrev-symbol", Fabbrev_symbol, Sabbrev_sy/ +abbrev_all_caps c-src/abbrev.c 58 +abbrevs_changed c-src/abbrev.c 56 +abc c-src/h.h 33 +abc c-src/h.h 37 +abort-recursive-edit c-src/emacs/src/keyboard.c /^DEFUN ("abort-recursive-edit", Fabort_recursive_ed/ +abs/f ada-src/etags-test-for.ada /^ function "abs" (Right : Complex) return Real'/ +absolute_dirname c-src/etags.c /^absolute_dirname (char *file, char *dir)$/ +absolute_filename c-src/etags.c /^absolute_filename (char *file, char *dir)$/ +abt cp-src/c.C 55 +accent_key_syms c-src/emacs/src/keyboard.c 4625 +access_keymap_keyremap c-src/emacs/src/keyboard.c /^access_keymap_keyremap (Lisp_Object map, Lisp_Obje/ +act prol-src/natded.prolog /^act(OutForm,OutSyn,Ws):-$/ +action prol-src/natded.prolog /^action(KeyVals):-$/ +active_maps c-src/emacs/src/keyboard.c /^active_maps (Lisp_Object first_event)$/ +actout prol-src/natded.prolog /^actout('Text',Trees):-$/ +addArchs objc-src/PackInsp.m /^-(void)addArchs:(const char *)string$/ +addPOReader php-src/lce_functions.php /^ function addPOReader($d_name, &$por)$/ +add_active prol-src/natded.prolog /^add_active([],Cat,Goal):-$/ +add_command_key c-src/emacs/src/keyboard.c /^add_command_key (Lisp_Object key)$/ +add_edge prol-src/natded.prolog /^add_edge(Left,Right,Cat):-$/ +add_node c-src/etags.c /^add_node (node *np, node **cur_node_p)$/ +add_regex c-src/etags.c /^add_regex (char *regexp_pattern, language *lang)$/ +add_user_signal c-src/emacs/src/keyboard.c /^add_user_signal (int sig, const char *name)$/ +addnoise html-src/algrthms.html /^Adding Noise to the$/ +address cccp.y 114 +address y-src/cccp.y 113 +adjust_point_for_property c-src/emacs/src/keyboard.c /^adjust_point_for_property (ptrdiff_t last_pt, bool/ +agent cp-src/clheir.hpp 75 +algorithms html-src/algrthms.html /^Description$/ +alias c-src/emacs/src/lisp.h 688 +align c-src/emacs/src/gmalloc.c /^align (size_t size)$/ +alignas c-src/emacs/src/lisp.h /^# define alignas(alignment) \/* empty *\/$/ +aligned c-src/emacs/src/gmalloc.c 199 +aligned_alloc c-src/emacs/src/gmalloc.c 71 +aligned_alloc c-src/emacs/src/gmalloc.c /^aligned_alloc (size_t alignment, size_t size)$/ +aligned_alloc c-src/emacs/src/gmalloc.c 1718 +alignlist c-src/emacs/src/gmalloc.c 196 +alive cp-src/conway.hpp 7 +all_kboards c-src/emacs/src/keyboard.c 86 +allocate_kboard c-src/emacs/src/keyboard.c /^allocate_kboard (Lisp_Object type)$/ +allocated c-src/emacs/src/regex.h 344 +an_extern_linkage c-src/h.h 44 +an_extern_linkage c-src/h.h 56 +an_extern_linkage_ptr c-src/h.h 43 +analyze_regex c-src/etags.c /^analyze_regex (char *regex_arg)$/ +andkeyvalseq prol-src/natded.prolog /^andkeyvalseq(KeyVals) --> ['&'], keyvalseq(KeyVals/ +animals c-src/h.h 81 +animals cp-src/c.C 126 +animals cp-src/c.C 130 +any_kboard_state c-src/emacs/src/keyboard.c /^any_kboard_state ()$/ +appDidInit objcpp-src/SimpleCalc.M /^- appDidInit:sender$/ +append prol-src/natded.prolog /^append([],Xs,Xs).$/ +appendToDisplay objcpp-src/SimpleCalc.M /^- appendToDisplay:(const char *)theDigit$/ +append_list prol-src/natded.prolog /^append_list([],[]).$/ +append_string pas-src/common.pas /^procedure append_string;(*($/ +append_tool_bar_item c-src/emacs/src/keyboard.c /^append_tool_bar_item (void)$/ +appendix perl-src/htlmify-cystic 24 +appendix_name perl-src/htlmify-cystic 13 +appendix_toc perl-src/htlmify-cystic 16 +apply_modifiers c-src/emacs/src/keyboard.c /^apply_modifiers (int modifiers, Lisp_Object base)$/ +apply_modifiers_uncached c-src/emacs/src/keyboard.c /^apply_modifiers_uncached (int modifiers, char *bas/ +aref_addr c-src/emacs/src/lisp.h /^aref_addr (Lisp_Object array, ptrdiff_t idx)$/ +arg c-src/h.h 13 +arg_type c-src/etags.c 250 +arglist cccp.y 41 +arglist y-src/cccp.y 41 +argno cccp.y 45 +argno y-src/cccp.y 45 +args c-src/h.h 30 +argsindent tex-src/texinfo.tex /^\\newskip\\defargsindent \\defargsindent=50pt$/ +argsindent tex-src/texinfo.tex /^\\dimen1=\\hsize \\advance \\dimen1 by -\\defargsindent/ +argsindent tex-src/texinfo.tex /^\\parshape 2 0in \\dimen0 \\defargsindent \\dimen1 / +argument c-src/etags.c 253 +argvals prol-src/natded.prolog /^argvals([]) --> [].$/ +array c.c 190 +ascii c-src/emacs/src/lisp.h 1598 +asort cp-src/functions.cpp /^void asort(int *a, int num){$/ +assemby-code-word forth-src/test-forth.fth /^code assemby-code-word ( dunno what it does )$/ +assert c-src/etags.c 135 +assert c-src/etags.c /^# define assert(x) ((void) 0)$/ +assign_neighbor cp-src/clheir.hpp /^ void assign_neighbor(int direction, location */ +at_end c-src/etags.c 249 +at_filename c-src/etags.c 247 +at_language c-src/etags.c 245 +at_least_one_member prol-src/natded.prolog /^at_least_one_member(X,[X|_]):-!.$/ +at_regexp c-src/etags.c 246 +at_stdin c-src/etags.c 248 +atom prol-src/natded.prolog /^atom(X) --> [X], {atomic(X)}.$/ +atomval prol-src/natded.prolog /^atomval(X) --> atom(X).$/ +aultparindent tex-src/texinfo.tex /^\\newdimen\\defaultparindent \\defaultparindent = 15p/ +aultparindent tex-src/texinfo.tex /^\\parindent = \\defaultparindent$/ +aultparindent\hang\textindent tex-src/texinfo.tex /^\\footstrut\\parindent=\\defaultparindent\\hang\\textin/ +auto_help c-src/etags.c 699 +b c.c 180 +b c.c 259 +b c.c 260 +b c.c 262 +b c.c /^b ()$/ +b c-src/h.h 41 +b c-src/h.h 103 +b c-src/h.h 104 +b cp-src/c.C 132 +b ruby-src/test1.ru /^ def b()$/ +backslash=0 tex-src/texinfo.tex /^\\let\\indexbackslash=0 %overridden during \\printin/ +bar c-src/c.c /^void bar() {while(0) {}}$/ +bar c.c 143 +bar c-src/h.h 19 +bar cp-src/x.cc /^XX::bar()$/ +bar1 ruby-src/test1.ru /^ attr_reader(:foo1, :bar1, # comment$/ +bar= ruby-src/test1.ru /^ attr_writer :bar,$/ +bas_syn prol-src/natded.prolog /^bas_syn(n(_)).$/ +base c-src/emacs/src/lisp.h 2188 +base cp-src/c.C /^double base (void) const { return rng_base; }$/ +base cp-src/Range.h /^ double base (void) const { return rng_base; }$/ +baz= ruby-src/test1.ru /^ :baz,$/ +bb c.c 275 +bbb c.c 251 +bbbbbb c-src/h.h 113 +been_warned c-src/etags.c 222 +before_command_echo_length c-src/emacs/src/keyboard.c 130 +before_command_key_count c-src/emacs/src/keyboard.c 129 +begtoken c-src/etags.c /^#define begtoken(c) (_btk[CHAR (c)]) \/* c can star/ +behaviour_info erl-src/gs_dialog.erl /^behaviour_info(callbacks) ->$/ +bf=cmbx10 tex-src/texinfo.tex /^\\font\\defbf=cmbx10 scaled \\magstep1 %was 1314$/ +bind pyt-src/server.py /^ def bind(self, key, action):$/ +bind_polling_period c-src/emacs/src/keyboard.c /^bind_polling_period (int n)$/ +bits_word c-src/emacs/src/lisp.h 123 +bits_word c-src/emacs/src/lisp.h 127 +bla c.c /^int bla ()$/ +blah tex-src/testenv.tex /^\\section{blah}$/ +bletch el-src/TAGTEST.EL /^(foo::defmumble bletch beuarghh)$/ +blv c-src/emacs/src/lisp.h 689 +blv_found c-src/emacs/src/lisp.h /^blv_found (struct Lisp_Buffer_Local_Value *blv)$/ +bodyindent tex-src/texinfo.tex /^\\newskip\\defbodyindent \\defbodyindent=.4in$/ +bodyindent tex-src/texinfo.tex /^\\advance\\dimen2 by -\\defbodyindent$/ +bodyindent tex-src/texinfo.tex /^\\advance\\dimen3 by -\\defbodyindent$/ +bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by -\\defbodyindent$/ +bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/ +bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/ +bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/ +bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/ +bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/ +bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/ +bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/ +bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/ +bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/ +bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/ +bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/ +bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/ +bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/ +bool c.c 222 +bool_header_size c-src/emacs/src/lisp.h 1472 +bool_vector_bitref c-src/emacs/src/lisp.h /^bool_vector_bitref (Lisp_Object a, EMACS_INT i)$/ +bool_vector_bytes c-src/emacs/src/lisp.h /^bool_vector_bytes (EMACS_INT size)$/ +bool_vector_data c-src/emacs/src/lisp.h /^bool_vector_data (Lisp_Object a)$/ +bool_vector_ref c-src/emacs/src/lisp.h /^bool_vector_ref (Lisp_Object a, EMACS_INT i)$/ +bool_vector_set c-src/emacs/src/lisp.h /^bool_vector_set (Lisp_Object a, EMACS_INT i, bool / +bool_vector_size c-src/emacs/src/lisp.h /^bool_vector_size (Lisp_Object a)$/ +bool_vector_uchar_data c-src/emacs/src/lisp.h /^bool_vector_uchar_data (Lisp_Object a)$/ +bool_vector_words c-src/emacs/src/lisp.h /^bool_vector_words (EMACS_INT size)$/ +boolvar c-src/emacs/src/lisp.h 2287 +bracelev c-src/etags.c 2520 +bsp_DevId c-src/h.h 25 +btowc c-src/emacs/src/regex.h /^# define btowc(c) c$/ +buffer c-src/etags.c 238 +buffer c-src/emacs/src/regex.h 341 +buffer c-src/h.h 119 +build prol-src/natded.prolog /^build([],Left,Left).$/ +build_pure_c_string c-src/emacs/src/lisp.h /^build_pure_c_string (const char *str)$/ +build_string c-src/emacs/src/lisp.h /^build_string (const char *str)$/ +buildact prol-src/natded.prolog /^buildact([SynIn],Right,RightPlus1):-$/ +builtin_lisp_symbol c-src/emacs/src/lisp.h /^builtin_lisp_symbol (int index)$/ +burst c-src/h.h 28 +busy c-src/emacs/src/gmalloc.c 158 +button_down_location c-src/emacs/src/keyboard.c 5210 +button_down_time c-src/emacs/src/keyboard.c 5218 +byte_stack c-src/emacs/src/lisp.h 3049 +bytecode_dest c-src/emacs/src/lisp.h 3037 +bytecode_top c-src/emacs/src/lisp.h 3036 +bytes_free c-src/emacs/src/gmalloc.c 314 +bytes_total c-src/emacs/src/gmalloc.c 310 +bytes_used c-src/emacs/src/gmalloc.c 312 +c c.c 180 +c c-src/h.h /^#define c() d$/ +c c-src/h.h 106 +c_ext c-src/etags.c 2271 +caccacacca c.c /^caccacacca (a,b,c,d,e,f,g)$/ +cacheLRUEntry_s c.c 172 +cacheLRUEntry_t c.c 177 +calloc c-src/emacs/src/gmalloc.c 66 +calloc c-src/emacs/src/gmalloc.c 70 +calloc c-src/emacs/src/gmalloc.c /^calloc (size_t nmemb, size_t size)$/ +calloc c-src/emacs/src/gmalloc.c 1717 +can_be_null c-src/emacs/src/regex.h 370 +cancel_echoing c-src/emacs/src/keyboard.c /^cancel_echoing (void)$/ +canonicalize_filename c-src/etags.c /^canonicalize_filename (register char *fn)$/ +case_Lisp_Int c-src/emacs/src/lisp.h 438 +cat c-src/h.h 81 +cat cp-src/c.C 126 +cat cp-src/c.C 130 +cat prol-src/natded.prolog /^cat(A, Alpha@Beta, Ass3, Qs3, tree(fe,A:Alpha@Beta/ +cat_atoms prol-src/natded.prolog /^cat_atoms(A1,A2,A3):-$/ +cccccccccc c-src/h.h 115 +cdr c-src/emacs/src/lisp.h 1159 +cell y-src/parse.y 278 +cgrep html-src/software.html /^cgrep$/ +chain c-src/emacs/src/lisp.h 1162 +chain c-src/emacs/src/lisp.h 2396 +char_bits c-src/emacs/src/lisp.h 2443 +char_table_specials c-src/emacs/src/lisp.h 1692 +charset_unibyte c-src/emacs/src/regex.h 410 +chartonmstr pas-src/common.pas /^function chartonmstr; (*($/ +checkQuotation php-src/lce_functions.php /^ function checkQuotation($str)$/ +check_cons_list c-src/emacs/src/lisp.h /^# define check_cons_list() lisp_h_check_cons_list/ +checker make-src/Makefile /^checker:$/ +checkhdr c-src/emacs/src/gmalloc.c /^checkhdr (const struct hdr *hdr)$/ +checkiso html-src/software.html /^checkiso$/ +childDidExit objc-src/Subprocess.m /^- childDidExit$/ +chunks_free c-src/emacs/src/gmalloc.c 313 +chunks_used c-src/emacs/src/gmalloc.c 311 +cjava c-src/etags.c 2936 +class_method ruby-src/test.rb /^ def ClassExample.class_method$/ +classifyLine php-src/lce_functions.php /^ function classifyLine($line)$/ +clean make-src/Makefile /^clean:$/ +clear cp-src/conway.hpp /^ void clear(void) { alive = 0; }$/ +clear-abbrev-table c-src/abbrev.c /^DEFUN ("clear-abbrev-table", Fclear_abbrev_table, / +clear-this-command-keys c-src/emacs/src/keyboard.c /^DEFUN ("clear-this-command-keys", Fclear_this_comm/ +clearAllKey objcpp-src/SimpleCalc.M /^- clearAllKey:sender$/ +clearKey objcpp-src/SimpleCalc.M /^- clearKey:sender$/ +clear_event c-src/emacs/src/keyboard.c /^clear_event (struct input_event *event)$/ +clear_input_pending c-src/emacs/src/keyboard.c /^clear_input_pending (void)$/ +clear_neighbors cp-src/clheir.cpp /^void discrete_location::clear_neighbors(void)$/ +clear_screen cp-src/screen.cpp /^void clear_screen(void)$/ +clear_waiting_for_input c-src/emacs/src/keyboard.c /^clear_waiting_for_input (void)$/ +cmd_error c-src/emacs/src/keyboard.c /^cmd_error (Lisp_Object data)$/ +cmd_error_internal c-src/emacs/src/keyboard.c /^cmd_error_internal (Lisp_Object data, const char */ +cmpfn c-src/emacs/src/lisp.h /^ bool (*cmpfn) (struct hash_table_test *t, Lisp_O/ +cmt prol-src/natded.prolog /^cmt:-$/ +cname c-src/etags.c 2519 +cno c-src/etags.c 224 +colori cp-src/c.C 40 +commaargvals prol-src/natded.prolog /^commaargvals(Args) -->$/ +command c-src/etags.c 187 +command-error-default-function c-src/emacs/src/keyboard.c /^DEFUN ("command-error-default-function", Fcommand_/ +command_loop c-src/emacs/src/keyboard.c /^command_loop (void)$/ +command_loop_1 c-src/emacs/src/keyboard.c /^command_loop_1 (void)$/ +command_loop_2 c-src/emacs/src/keyboard.c /^command_loop_2 (Lisp_Object ignore)$/ +command_loop_level c-src/emacs/src/keyboard.c 195 +comment php-src/lce_functions.php /^ function comment($line, $class)$/ +compile_empty prol-src/natded.prolog /^compile_empty:-$/ +compile_lex prol-src/natded.prolog /^compile_lex(File):-$/ +complete prol-src/natded.prolog /^complete(Cat):-$/ +complete-tag el-src/emacs/lisp/progmodes/etags.el /^(defun complete-tag ()$/ +compressor c-src/etags.c 188 +compressors c-src/etags.c 457 +compute_next_state cp-src/conway.hpp /^ void compute_next_state(void)$/ +compute_next_state cp-src/clheir.hpp /^ virtual void compute_next_state(void) { }$/ +conalgorithm html-src/algrthms.html /^Convolutionally$/ +concat c-src/etags.c /^concat (const char *s1, const char *s2, const char/ +concatenatenamestrings pas-src/common.pas /^function concatenatenamestrings; (*($/ +consider_token c-src/etags.c /^consider_token (char *str, int len, int c, int *c_/ +constant c-src/h.h 29 +constant cccp.y 113 +constant y-src/cccp.y 112 +constant_args c-src/h.h 27 +constype c-src/emacs/src/lisp.h 3739 +consult_lex prol-src/natded.prolog /^consult_lex:-$/ +contents c-src/emacs/src/lisp.h 1372 +contents c-src/emacs/src/lisp.h 1600 +contents c-src/emacs/src/lisp.h 1624 +count c-src/emacs/src/lisp.h 1863 +count_layers lua-src/allegro.lua /^local function count_layers (layer)$/ +count_words c-src/tab.c /^static int count_words(char *str, char delim)$/ +counter cp-src/c.C 33 +counter cp-src/c.C 36 +cow cp-src/c.C 127 +cow cp-src/c.C 131 +cplpl c-src/etags.c 2935 +createPOEntries php-src/lce_functions.php /^ function createPOEntries()$/ +createWidgets pyt-src/server.py /^ def createWidgets(self, host):$/ +createWidgets pyt-src/server.py /^ def createWidgets(self):$/ +cscInitTime cp-src/c.C 7 +cscSegmentationTime cp-src/c.C 8 +cstack c-src/etags.c 2523 +ctags make-src/Makefile /^ctags: etags.c ${OBJS}$/ +curlb c-src/etags.c 2929 +curlinepos c-src/etags.c 2931 +current-idle-time c-src/emacs/src/keyboard.c /^DEFUN ("current-idle-time", Fcurrent_idle_time, Sc/ +current-input-mode c-src/emacs/src/keyboard.c /^DEFUN ("current-input-mode", Fcurrent_input_mode, / +current_kboard c-src/emacs/src/keyboard.c 85 +current_lb_is_new c-src/etags.c 2926 +cursor_position cp-src/screen.cpp /^void cursor_position(void)$/ +cursor_x cp-src/screen.cpp 15 +cursor_y cp-src/screen.cpp 15 +d c.c 180 +d c-src/emacs/src/lisp.h 4673 +d c-src/emacs/src/lisp.h 4679 +data c-src/emacs/src/lisp.h 1395 +data c-src/emacs/src/lisp.h 2129 +data c-src/emacs/src/lisp.h 2395 +ddefineseen c-src/etags.c 2462 +debian-bug html-src/software.html /^debian-bug.el$/ +decimalKey objcpp-src/SimpleCalc.M /^- decimalKey:sender$/ +decode_timer c-src/emacs/src/keyboard.c /^decode_timer (Lisp_Object timer, struct timespec */ +def c-src/h.h 35 +def c-src/h.h 38 +defalt c-src/emacs/src/lisp.h 1585 +default-tags-table-function el-src/emacs/lisp/progmodes/etags.el /^(defvar default-tags-table-function nil$/ +default_C_entries c-src/etags.c /^default_C_entries (FILE *inf)$/ +default_C_help c-src/etags.c 515 +default_C_help c-src/etags.c 523 +default_C_suffixes c-src/etags.c 512 +defcell c-src/emacs/src/lisp.h 2351 +define-abbrev c-src/abbrev.c /^DEFUN ("define-abbrev", Fdefine_abbrev, Sdefine_ab/ +define-abbrev-table c-src/abbrev.c /^DEFUN ("define-abbrev-table", Fdefine_abbrev_table/ +define-global-abbrev c-src/abbrev.c /^DEFUN ("define-global-abbrev", Fdefine_global_abbr/ +define-mode-abbrev c-src/abbrev.c /^DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev, / +defined_GC_CHECK_STRING_BYTES c-src/emacs/src/lisp.h 4663 +defined_GC_CHECK_STRING_BYTES c-src/emacs/src/lisp.h 4665 +definedef c-src/etags.c 2464 +defun_func1 c.c /^defun_func1()$/ +delegate objc-src/Subprocess.m /^- delegate$/ +deleteItem pyt-src/server.py /^ def deleteItem(self):$/ +delete_kboard c-src/emacs/src/keyboard.c /^delete_kboard (KBOARD *kb)$/ +deliver_input_available_signal c-src/emacs/src/keyboard.c /^deliver_input_available_signal (int sig)$/ +deliver_interrupt_signal c-src/emacs/src/keyboard.c /^deliver_interrupt_signal (int sig)$/ +deliver_user_signal c-src/emacs/src/keyboard.c /^deliver_user_signal (int sig)$/ +depth c-src/emacs/src/lisp.h 1618 +derived_analyses prol-src/natded.prolog /^derived_analyses([],[]).$/ +describe_abbrev c-src/abbrev.c /^describe_abbrev (sym, stream)$/ +detect_input_pending c-src/emacs/src/keyboard.c /^detect_input_pending (void)$/ +detect_input_pending_ignore_squeezables c-src/emacs/src/keyboard.c /^detect_input_pending_ignore_squeezables (void)$/ +detect_input_pending_run_timers c-src/emacs/src/keyboard.c /^detect_input_pending_run_timers (bool do_display)$/ +dialog_loop erl-src/gs_dialog.erl /^dialog_loop(Module, Window, Frame, Extra, Args) ->/ +dignorerest c-src/etags.c 2463 +discard-input c-src/emacs/src/keyboard.c /^DEFUN ("discard-input", Fdiscard_input, Sdiscard_i/ +discard_mouse_events c-src/emacs/src/keyboard.c /^discard_mouse_events (void)$/ +discrete_location cp-src/clheir.hpp 56 +discrete_location cp-src/clheir.hpp /^ discrete_location(int xi, int yi, int zi):$/ +display cp-src/conway.cpp /^void display(void)$/ +disposetextstring pas-src/common.pas /^procedure disposetextstring;(*($/ +dnone c-src/etags.c 2460 +doc c-src/emacs/src/lisp.h 1689 +dog c-src/h.h 81 +dog cp-src/c.C 126 +dog cp-src/c.C 130 +dotfill tex-src/texinfo.tex /^ \\null\\nobreak\\indexdotfill % Have leaders before/ +dotfill tex-src/texinfo.tex /^\\noindent\\hskip\\secondaryindent\\hbox{#1}\\indexdotf/ +double_click_count c-src/emacs/src/keyboard.c 5222 +drag_n_drop_syms c-src/emacs/src/keyboard.c 4629 +dribble c-src/emacs/src/keyboard.c 236 +dsharpseen c-src/etags.c 2461 +dummies tex-src/texinfo.tex /^{\\indexdummies % Must do this here, since \\bf, etc/ +dummies tex-src/texinfo.tex /^{\\indexdummies % Must do this here, since \\bf, etc/ +dummy1 cp-src/burton.cpp /^::dummy::dummy test::dummy1(void)$/ +dummy2 cp-src/burton.cpp /^::dummy::dummy test::dummy2(::CORBA::Long dummy)$/ +dummy3 cp-src/burton.cpp /^::dummy::dummy test::dummy3(char* name, ::CORBA::L/ +dummydots tex-src/texinfo.tex /^\\let\\dots=\\indexdummydots$/ +dummyfont tex-src/texinfo.tex /^\\let\\w=\\indexdummyfont$/ +dummyfont tex-src/texinfo.tex /^\\let\\t=\\indexdummyfont$/ +dummyfont tex-src/texinfo.tex /^\\let\\r=\\indexdummyfont$/ +dummyfont tex-src/texinfo.tex /^\\let\\i=\\indexdummyfont$/ +dummyfont tex-src/texinfo.tex /^\\let\\b=\\indexdummyfont$/ +dummyfont tex-src/texinfo.tex /^\\let\\emph=\\indexdummyfont$/ +dummyfont tex-src/texinfo.tex /^\\let\\strong=\\indexdummyfont$/ +dummyfont tex-src/texinfo.tex /^\\let\\sc=\\indexdummyfont$/ +dummyfont tex-src/texinfo.tex /^\\let\\tclose=\\indexdummyfont$/ +dummyfont tex-src/texinfo.tex /^\\let\\code=\\indexdummyfont$/ +dummyfont tex-src/texinfo.tex /^\\let\\file=\\indexdummyfont$/ +dummyfont tex-src/texinfo.tex /^\\let\\samp=\\indexdummyfont$/ +dummyfont tex-src/texinfo.tex /^\\let\\kbd=\\indexdummyfont$/ +dummyfont tex-src/texinfo.tex /^\\let\\key=\\indexdummyfont$/ +dummyfont tex-src/texinfo.tex /^\\let\\var=\\indexdummyfont$/ +dummytex tex-src/texinfo.tex /^\\let\\TeX=\\indexdummytex$/ +dump pyt-src/server.py /^ def dump(self, folded):$/ +eabs c-src/emacs/src/lisp.h /^#define eabs(x) ((x) < 0 ? -(x) : (x))$/ +eassert c-src/emacs/src/lisp.h /^# define eassert(cond) ((void) (false && (cond))) / +eassert c-src/emacs/src/lisp.h /^# define eassert(cond) \\$/ +eassume c-src/emacs/src/lisp.h /^# define eassume(cond) assume (cond)$/ +eassume c-src/emacs/src/lisp.h /^# define eassume(cond) \\$/ +eax c-src/sysdep.h 31 +eax c-src/sysdep.h 33 +eax c-src/sysdep.h 33 +echo_add_key c-src/emacs/src/keyboard.c /^echo_add_key (Lisp_Object c)$/ +echo_char c-src/emacs/src/keyboard.c /^echo_char (Lisp_Object c)$/ +echo_dash c-src/emacs/src/keyboard.c /^echo_dash (void)$/ +echo_kboard c-src/emacs/src/keyboard.c 166 +echo_keystrokes_p c-src/emacs/src/keyboard.c /^echo_keystrokes_p (void)$/ +echo_length c-src/emacs/src/keyboard.c /^echo_length (void)$/ +echo_message_buffer c-src/emacs/src/keyboard.c 171 +echo_now c-src/emacs/src/keyboard.c /^echo_now (void)$/ +echo_truncate c-src/emacs/src/keyboard.c /^echo_truncate (ptrdiff_t nchars)$/ +echoing c-src/emacs/src/keyboard.c 154 +editItem pyt-src/server.py /^ def editItem(self):$/ +editsite pyt-src/server.py /^ def editsite(self, site):$/ +edituser pyt-src/server.py /^ def edituser(self, user):$/ +egetenv c-src/emacs/src/lisp.h /^egetenv (const char *var)$/ +emacs_abort c-src/emacs/src/lisp.h /^extern _Noreturn void emacs_abort (void) NO_INLINE/ +end c-src/emacs/src/regex.h 432 +end c-src/emacs/src/keyboard.c 8753 +endtoken c-src/etags.c /^#define endtoken(c) (_etk[CHAR (c)]) \/* c ends tok/ +enter_critical_section c-src/h.h 116 +entry perl-src/htlmify-cystic 218 +entry perl-src/htlmify-cystic 234 +entry perl-src/htlmify-cystic 245 +entry perl-src/htlmify-cystic 252 +entry perl-src/htlmify-cystic 268 +entry perl-src/htlmify-cystic 276 +entry perl-src/htlmify-cystic 281 +entry perl-src/htlmify-cystic 296 +equalsKey objcpp-src/SimpleCalc.M /^- equalsKey:sender$/ +erlang_atom c-src/etags.c /^erlang_atom (char *s)$/ +erlang_attribute c-src/etags.c /^erlang_attribute (char *s)$/ +erlang_func c-src/etags.c /^erlang_func (char *s, char *last)$/ +error c-src/etags.c /^static void error (const char *, ...) ATTRIBUTE_FO/ +error c-src/etags.c /^error (const char *format, ...)$/ +error c-src/emacs/src/lisp.h /^extern _Noreturn void error (const char *, ...) AT/ +error cccp.y /^error (msg)$/ +error y-src/cccp.y /^error (msg)$/ +error_signaled c-src/etags.c 264 +etags el-src/emacs/lisp/progmodes/etags.el /^(defgroup etags nil "Tags tables."$/ +etags html-src/software.html /^Etags$/ +etags make-src/Makefile /^etags: etags.c ${OBJS}$/ +etags--xref-find-definitions el-src/emacs/lisp/progmodes/etags.el /^(defun etags--xref-find-definitions (pattern &opti/ +etags--xref-limit el-src/emacs/lisp/progmodes/etags.el /^(defconst etags--xref-limit 1000)$/ +etags-file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun etags-file-of-tag (&optional relative) ; Do/ +etags-goto-tag-location el-src/emacs/lisp/progmodes/etags.el /^(defun etags-goto-tag-location (tag-info)$/ +etags-list-tags el-src/emacs/lisp/progmodes/etags.el /^(defun etags-list-tags (file) ; Doc string?$/ +etags-recognize-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun etags-recognize-tags-table ()$/ +etags-snarf-tag el-src/emacs/lisp/progmodes/etags.el /^(defun etags-snarf-tag (&optional use-explicit) ; / +etags-tags-apropos el-src/emacs/lisp/progmodes/etags.el /^(defun etags-tags-apropos (string) ; Doc string?$/ +etags-tags-apropos-additional el-src/emacs/lisp/progmodes/etags.el /^(defun etags-tags-apropos-additional (regexp)$/ +etags-tags-completion-table el-src/emacs/lisp/progmodes/etags.el /^(defun etags-tags-completion-table () ; Doc string/ +etags-tags-included-tables el-src/emacs/lisp/progmodes/etags.el /^(defun etags-tags-included-tables () ; Doc string?/ +etags-tags-table-files el-src/emacs/lisp/progmodes/etags.el /^(defun etags-tags-table-files () ; Doc string?$/ +etags-verify-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun etags-verify-tags-table ()$/ +etags-xref-find el-src/emacs/lisp/progmodes/etags.el /^(defun etags-xref-find (action id)$/ +etags-xref-find-definitions-tag-order el-src/emacs/lisp/progmodes/etags.el /^(defvar etags-xref-find-definitions-tag-order '(ta/ +etags.1.man make-src/Makefile /^etags.1.man: etags.1$/ +etags_getcwd c-src/etags.c /^etags_getcwd (void)$/ +eval_dyn c-src/emacs/src/keyboard.c /^eval_dyn (Lisp_Object form)$/ +event-convert-list c-src/emacs/src/keyboard.c /^DEFUN ("event-convert-list", Fevent_convert_list, / +event-symbol-parse-modifiers c-src/emacs/src/keyboard.c /^DEFUN ("internal-event-symbol-parse-modifiers", Fe/ +event_head c-src/emacs/src/keyboard.c 11021 +event_to_kboard c-src/emacs/src/keyboard.c /^event_to_kboard (struct input_event *event)$/ +exact c-src/emacs/src/gmalloc.c 200 +execute cp-src/c.C /^ void execute(CPluginCSCState& p, int w, in/ +exit c-src/exit.c /^DEFUN(exit, (status), int status)$/ +exit c-src/exit.strange_suffix /^DEFUN(exit, (status), int status)$/ +exit-recursive-edit c-src/emacs/src/keyboard.c /^DEFUN ("exit-recursive-edit", Fexit_recursive_edit/ +exit_critical_to_previous c-src/h.h 117 +exp y-src/parse.y 94 +exp y-src/atest.y 2 +exp y-src/cccp.y 156 +exp y-src/cccp.y 185 +exp1 y-src/cccp.y 148 +exp_list y-src/parse.y 262 +expand-abbrev c-src/abbrev.c /^DEFUN ("expand-abbrev", Fexpand_abbrev, Sexpand_ab/ +expandmng prol-src/natded.prolog /^expandmng(var(V),var(V)).$/ +expandmng_tree prol-src/natded.prolog /^expandmng_tree(tree(Rule,Syn:Sem,Trees),$/ +expandmng_trees prol-src/natded.prolog /^expandmng_trees([],[]).$/ +expandsyn prol-src/natded.prolog /^expandsyn(Syn,Syn):-$/ +explicitly-quoted-pending-delete-mode el-src/TAGTEST.EL /^(defalias (quote explicitly-quoted-pending-delete-/ +expression_value cccp.y 68 +expression_value y-src/cccp.y 68 +extras c-src/emacs/src/lisp.h 1603 +extvar c-src/h.h 109 +f c-src/c.c /^T f(){if(x){}$/ +f c.c 145 +f c.c 156 +f c.c 168 +f c.c /^int f$/ +f c-src/h.h 89 +f cp-src/c.C /^A* f() {}$/ +f cp-src/c.C /^int f(A x) {}$/ +f cp-src/c.C /^int A::f(A* x) {}$/ +f cp-src/c.C /^A > A,int>::f(A* x) {}$/ +f cp-src/c.C /^class B { void f() {} };$/ +f cp-src/c.C /^ void f() {}$/ +f cp-src/c.C /^ int f(){return 0;}; \/\/ first comment$/ +f cp-src/c.C /^ void f() {}$/ +f cp-src/fail.C /^ int f() { return 5; }$/ +f cp-src/fail.C /^int A::B::f() { return 2; }$/ +f1 c.c /^ f1 () { \/* Do something. *\/; }$/ ++f1 perl-src/kai-test.pl /^sub f1 {$/ +f2 c.c /^void f2 () { \/* Do something. *\/; }$/ ++f2 perl-src/kai-test.pl /^sub main::f2 {$/ ++f3 perl-src/kai-test.pl /^sub f3 {$/ ++f4 perl-src/kai-test.pl /^sub Bar::f4 {$/ ++f5 perl-src/kai-test.pl /^sub f5 {$/ ++f6 perl-src/kai-test.pl /^sub f6 {$/ ++f7 perl-src/kai-test.pl /^sub f7 {$/ +fast_string_match_ignore_case c-src/emacs/src/lisp.h /^fast_string_match_ignore_case (Lisp_Object regexp,/ +fastctags make-src/Makefile /^fastctags:$/ +fastetags make-src/Makefile /^fastetags:$/ +fastmap c-src/emacs/src/regex.h 355 +fastmap_accurate c-src/emacs/src/regex.h 383 +fatal c-src/etags.c /^fatal (const char *s1, const char *s2)$/ +fatala c.c /^void fatala () __attribute__ ((noreturn));$/ +fdHandler objc-src/Subprocess.m /^- fdHandler:(int)theFd$/ +fdHandler objc-src/Subprocess.m /^fdHandler (int theFd, id self)$/ +fdefunkey c-src/etags.c 2409 +fdefunname c-src/etags.c 2410 +fdesc c-src/etags.c 201 +fdesc c-src/etags.c 212 +fdp c-src/etags.c 217 +ff cp-src/c.C /^ int ff(){return 1;};$/ +field_of_play cp-src/conway.cpp 18 +fignore c-src/etags.c 2416 +file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun file-of-tag (&optional relative)$/ +file-of-tag-function el-src/emacs/lisp/progmodes/etags.el /^(defvar file-of-tag-function nil$/ +fileJoin php-src/lce_functions.php /^ function fileJoin()$/ ++file_end perl-src/htlmify-cystic /^sub file_end ()$/ +file_index perl-src/htlmify-cystic 33 +file_tocs perl-src/htlmify-cystic 30 +filename_is_absolute c-src/etags.c /^filename_is_absolute (char *fn)$/ +filenames c-src/etags.c 196 +find-tag el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag (tagname &optional next-p regexp-p/ +find-tag-default-function el-src/emacs/lisp/progmodes/etags.el /^(defcustom find-tag-default-function nil$/ +find-tag-history el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-history nil) ; Doc string?$/ +find-tag-hook el-src/emacs/lisp/progmodes/etags.el /^(defcustom find-tag-hook nil$/ +find-tag-in-order el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-in-order (pattern$/ +find-tag-interactive el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-interactive (prompt &optional no-d/ +find-tag-marker-ring el-src/emacs/lisp/progmodes/etags.el /^(defvaralias 'find-tag-marker-ring 'xref--marker-r/ +find-tag-marker-ring-length el-src/emacs/lisp/progmodes/etags.el /^(define-obsolete-variable-alias 'find-tag-marker-r/ +find-tag-next-line-after-failure-p el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-next-line-after-failure-p nil$/ +find-tag-noselect el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-noselect (tagname &optional next-p/ +find-tag-other-frame el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-other-frame (tagname &optional nex/ +find-tag-other-window el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-other-window (tagname &optional ne/ +find-tag-regexp el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-regexp (regexp &optional next-p ot/ +find-tag-regexp-next-line-after-failure-p el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-regexp-next-line-after-failure-p / +find-tag-regexp-search-function el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-regexp-search-function nil$/ +find-tag-regexp-tag-order el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-regexp-tag-order nil$/ +find-tag-search-function el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-search-function nil$/ +find-tag-tag el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-tag (string)$/ +find-tag-tag-order el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-tag-order nil$/ +find_entries c-src/etags.c /^find_entries (FILE *inf)$/ +find_user_signal_name c-src/emacs/src/keyboard.c /^find_user_signal_name (int sig)$/ +findcats prol-src/natded.prolog /^findcats([],Left,Left).$/ ++finish_appendices perl-src/htlmify-cystic /^sub finish_appendices ()$/ ++finish_sections perl-src/htlmify-cystic /^sub finish_sections ()$/ ++finish_subsections perl-src/htlmify-cystic /^sub finish_subsections ()$/ ++finish_subsubsections perl-src/htlmify-cystic /^sub finish_subsubsections ()$/ +finlist c-src/etags.c 2414 +first c-src/emacs/src/gmalloc.c 151 +fitchtreelist prol-src/natded.prolog /^fitchtreelist([]).$/ +fixup_locale c-src/emacs/src/lisp.h /^INLINE void fixup_locale (void) {}$/ +flag c-src/getopt.h 83 +flag2str pyt-src/server.py /^def flag2str(value, string):$/ +flistseen c-src/etags.c 2415 +fn c-src/exit.c /^ void EXFUN((*fn[1]), (NOARGS));$/ +fn c-src/exit.strange_suffix /^ void EXFUN((*fn[1]), (NOARGS));$/ +fnin y-src/parse.y 67 +fnin parse.y 67 +focus_set pyt-src/server.py /^ def focus_set(self):$/ +follow_key c-src/emacs/src/keyboard.c /^follow_key (Lisp_Object keymap, Lisp_Object key)$/ +fonts tex-src/texinfo.tex /^\\obeyspaces \\obeylines \\ninett \\indexfonts \\rawbac/ +fonts\rm tex-src/texinfo.tex /^ \\indexfonts\\rm \\tolerance=9500 \\advance\\baseline/ +foo c.c 150 +foo c.c 166 +foo c.c 167 +foo c.c 178 +foo c.c 189 +foo c-src/h.h 18 +foo cp-src/c.C 68 +foo cp-src/c.C 79 +foo cp-src/c.C /^ foo() {$/ +foo cp-src/x.cc /^XX::foo()$/ +foo f-src/entry.for /^ character*(*) function foo()$/ +foo f-src/entry.strange_suffix /^ character*(*) function foo()$/ +foo f-src/entry.strange /^ character*(*) function foo()$/ +foo php-src/ptest.php /^foo()$/ +foo ruby-src/test1.ru /^ attr_reader :foo$/ +foo! ruby-src/test1.ru /^ def foo!$/ +foo1 ruby-src/test1.ru /^ attr_reader(:foo1, :bar1, # comment$/ +foo2 ruby-src/test1.ru /^ alias_method ( :foo2, #cmmt$/ +foobar c-src/c.c /^int foobar() {;}$/ +foobar c.c /^extern void foobar (void) __attribute__ ((section / +foobar2 c-src/h.h 20 +foobar2_ c-src/h.h 16 +foperator c-src/etags.c 2411 +force_auto_save_soon c-src/emacs/src/keyboard.c /^force_auto_save_soon (void)$/ +force_explicit_name c-src/etags.c 265 +force_quit_count c-src/emacs/src/keyboard.c 10387 +formatSize objc-src/PackInsp.m /^-(const char *)formatSize:(const char *)size inBuf/ +found c-src/emacs/src/lisp.h 2344 +fracas html-src/software.html /^Fracas$/ +frag c-src/emacs/src/gmalloc.c 152 +frame_local c-src/emacs/src/lisp.h 2341 +free c-src/emacs/src/gmalloc.c 67 +free c-src/emacs/src/gmalloc.c 72 +free c-src/emacs/src/gmalloc.c 166 +free c-src/emacs/src/gmalloc.c /^free (void *ptr)$/ +free c-src/emacs/src/gmalloc.c 1719 +free_fdesc c-src/etags.c /^free_fdesc (register fdesc *fdp)$/ +free_for prol-src/natded.prolog /^free_for(var(_),_,_).$/ +free_regexps c-src/etags.c /^free_regexps (void)$/ +free_tree c-src/etags.c /^free_tree (register node *np)$/ +free_var prol-src/natded.prolog /^free_var(var(V),var(V)).$/ +freehook c-src/emacs/src/gmalloc.c /^freehook (void *ptr)$/ +fresh_vars prol-src/natded.prolog /^fresh_vars(var(V),var(V)).$/ +fstartlist c-src/etags.c 2413 +func1 c.c /^int func1$/ +func2 c.c /^int func2 (a,b$/ +func_key_syms c-src/emacs/src/keyboard.c 4626 +funcboo c.c /^bool funcboo ()$/ +funcpointer c-src/emacs/src/lisp.h 2126 +funcptr c-src/h.h /^ fu int (*funcptr) (void *ptr);$/ +function c-src/etags.c 194 +function c-src/emacs/src/lisp.h 694 +function c-src/emacs/src/lisp.h 1685 +function c-src/emacs/src/lisp.h 2197 +functionp c-src/emacs/src/lisp.h /^functionp (Lisp_Object object)$/ +fvdef c-src/etags.c 2418 +fvextern c-src/etags.c 2420 +fvnameseen c-src/etags.c 2412 +fvnone c-src/etags.c 2408 +fwd c-src/emacs/src/lisp.h 690 +fwd c-src/emacs/src/lisp.h 2346 +g cp-src/c.C /^ int g(){return 2;};$/ +galileo html-src/software.html /^GaliLEO$/ +gather pyt-src/server.py /^ def gather(self):$/ +gather pyt-src/server.py /^ def gather(self):$/ +gc_aset c-src/emacs/src/lisp.h /^gc_aset (Lisp_Object array, ptrdiff_t idx, Lisp_Ob/ +gcmarkbit c-src/emacs/src/lisp.h 656 +gcpro c-src/emacs/src/lisp.h 3042 +gcpro c-src/emacs/src/lisp.h 3132 +gen_help_event c-src/emacs/src/keyboard.c /^gen_help_event (Lisp_Object help, Lisp_Object fram/ +genalgorithm html-src/algrthms.html /^Generating the Data<\/font><\/i><\/b>$/ +generic_object cp-src/clheir.cpp /^generic_object::generic_object(void)$/ +generic_object cp-src/clheir.hpp 13 +getArchs objc-src/PackInsp.m /^-(void)getArchs$/ +getDomainNames php-src/lce_functions.php /^ function getDomainNames()$/ +getFoo lua-src/test.lua /^function Cube.data.getFoo ()$/ +getPOReader php-src/lce_functions.php /^ function &getPOReader($domain)$/ +getPath objc-src/PackInsp.m /^-(const char *)getPath:(char *)buf forType:(const / +getPos lua-src/test.lua /^function Rectangle.getPos ()$/ +getPos lua-src/test.lua /^function Circle.getPos ()$/ +getTextDomains php-src/lce_functions.php /^ function getTextDomains($lines)$/ +get_compressor_from_suffix c-src/etags.c /^get_compressor_from_suffix (char *file, char **ext/ +get_contiguous_space c-src/emacs/src/gmalloc.c /^get_contiguous_space (ptrdiff_t size, void *positi/ +get_current_dir_name c-src/emacs/src/gmalloc.c 33 +get_input_pending c-src/emacs/src/keyboard.c /^get_input_pending (int flags)$/ +get_language_from_filename c-src/etags.c /^get_language_from_filename (char *file, int case_s/ +get_language_from_interpreter c-src/etags.c /^get_language_from_interpreter (char *interpreter)$/ +get_language_from_langname c-src/etags.c /^get_language_from_langname (const char *name)$/ +get_layer_by_name lua-src/allegro.lua /^local function get_layer_by_name (sprite, layer, n/ +get_tag c-src/etags.c /^get_tag (register char *bp, char **namepp)$/ +get_word c-src/tab.c /^static char *get_word(char **str, char delim)$/ +getcjmp c-src/emacs/src/keyboard.c 147 ++getopt perl-src/yagrip.pl /^sub getopt {$/ +getopt.o make-src/Makefile /^getopt.o: emacs\/lib-src\/getopt.c$/ +getopt1.o make-src/Makefile /^getopt1.o: emacs\/lib-src\/getopt1.c$/ +getptys objc-src/Subprocess.m /^getptys (int *master, int *slave)$/ +gettext php-src/lce_functions.php /^ function gettext($msgid)$/ +ggg c-src/h.h 10 +ghi1 c-src/h.h 36 +ghi2 c-src/h.h 39 +giallo cp-src/c.C 40 +glider cp-src/conway.cpp /^void glider(int x, int y)$/ +gnu html-src/software.html /^Free software that I wrote for the GNU project or / +gobble_input c-src/emacs/src/keyboard.c /^gobble_input (void)$/ +goto-tag-location-function el-src/emacs/lisp/progmodes/etags.el /^(defvar goto-tag-location-function nil$/ +goto_xy cp-src/screen.cpp /^void goto_xy(unsigned char x, unsigned char y)$/ +handleList pyt-src/server.py /^ def handleList(self, event):$/ +handleNew pyt-src/server.py /^ def handleNew(self, event):$/ +handle_async_input c-src/emacs/src/keyboard.c /^handle_async_input (void)$/ +handle_input_available_signal c-src/emacs/src/keyboard.c /^handle_input_available_signal (int sig)$/ +handle_interrupt c-src/emacs/src/keyboard.c /^handle_interrupt (bool in_signal_handler)$/ +handle_interrupt_signal c-src/emacs/src/keyboard.c /^handle_interrupt_signal (int sig)$/ +handle_user_signal c-src/emacs/src/keyboard.c /^handle_user_signal (int sig)$/ +handler c-src/emacs/src/lisp.h 3023 +handlertype c-src/emacs/src/lisp.h 3021 +has_arg c-src/getopt.h 82 +hash c-src/etags.c /^hash (const char *str, int len)$/ +hash c-src/emacs/src/lisp.h 1843 +hash_table_test c-src/emacs/src/lisp.h 1805 +hashfn c-src/emacs/src/lisp.h /^ EMACS_UINT (*hashfn) (struct hash_table_test *t,/ +hdr c-src/emacs/src/gmalloc.c 1860 +head_table c-src/emacs/src/keyboard.c 11027 +header c-src/emacs/src/lisp.h 1371 +header c-src/emacs/src/lisp.h 1388 +header c-src/emacs/src/lisp.h 1581 +header c-src/emacs/src/lisp.h 1610 +header c-src/emacs/src/lisp.h 1672 +header c-src/emacs/src/lisp.h 1826 +header_size c-src/emacs/src/lisp.h 1471 +heapsize c-src/emacs/src/gmalloc.c 361 +help c-src/etags.c 193 +helpPanel objcpp-src/SimpleCalc.M /^- helpPanel:sender$/ +help_char_p c-src/emacs/src/keyboard.c /^help_char_p (Lisp_Object c)$/ +help_form_saved_window_configs c-src/emacs/src/keyboard.c 2156 +helpwin pyt-src/server.py /^def helpwin(helpdict):$/ +hide_cursor cp-src/screen.cpp /^void hide_cursor(void)$/ +htmltreelist prol-src/natded.prolog /^htmltreelist([]).$/ +hybrid_aligned_alloc c-src/emacs/src/gmalloc.c /^hybrid_aligned_alloc (size_t alignment, size_t siz/ +hybrid_calloc c-src/emacs/src/gmalloc.c /^hybrid_calloc (size_t nmemb, size_t size)$/ +hybrid_free c-src/emacs/src/gmalloc.c /^hybrid_free (void *ptr)$/ +hybrid_get_current_dir_name c-src/emacs/src/gmalloc.c /^hybrid_get_current_dir_name (void)$/ +hybrid_malloc c-src/emacs/src/gmalloc.c /^hybrid_malloc (size_t size)$/ +hybrid_realloc c-src/emacs/src/gmalloc.c /^hybrid_realloc (void *ptr, size_t size)$/ +hypothetical_mem prol-src/natded.prolog /^hypothetical_mem(fi(N),Ass,_):-$/ +i c-src/c.c 2 +i c.c 169 +i c-src/emacs/src/lisp.h 567 +i c-src/emacs/src/lisp.h 4673 +i c-src/emacs/src/lisp.h 4679 +i cp-src/c.C 132 +ialpage tex-src/texinfo.tex /^\\newbox\\partialpage$/ +ialpage tex-src/texinfo.tex /^ \\dimen@=\\pageheight \\advance\\dimen@ by-\\ht\\parti/ +ialpage tex-src/texinfo.tex /^ \\availdimen@=\\pageheight \\advance\\availdimen@ by/ +ialpage tex-src/texinfo.tex /^ \\dimen@=\\pageheight \\advance\\dimen@ by-\\ht\\pa/ +ialpage= tex-src/texinfo.tex /^ \\output={\\global\\setbox\\partialpage=$/ +idx c-src/emacs/src/lisp.h 3150 +ignore_case c-src/etags.c 266 +ignore_mouse_drag_p c-src/emacs/src/keyboard.c 1256 +ill=\relax tex-src/texinfo.tex /^\\let\\refill=\\relax$/ +immediate_quit c-src/emacs/src/keyboard.c 174 +impatto html-src/softwarelibero.html /^Impatto pratico del software libero$/ +in_word_set c-src/etags.c /^in_word_set (register const char *str, register un/ +inattribute c-src/etags.c 2400 +inc cp-src/Range.h /^ double inc (void) const { return rng_inc; }$/ +index c-src/emacs/src/lisp.h 1856 +infabsdir c-src/etags.c 206 +infabsname c-src/etags.c 205 +infiles make-src/Makefile /^infiles = $(filter-out ${NONSRCS},${SRCS}) srclist/ +infname c-src/etags.c 204 +info c-src/emacs/src/gmalloc.c 157 +infoPanel objcpp-src/SimpleCalc.M /^- infoPanel:sender$/ +init c-src/etags.c /^init (void)$/ +init objc-src/Subprocess.m /^- init:(const char *)subprocessString$/ +init objc-src/Subprocess.m /^ andStdErr:(BOOL)wantsStdErr$/ +init objcpp-src/SimpleCalc.M /^- init$/ +init_control c.c 239 +init_kboard c-src/emacs/src/keyboard.c /^init_kboard (KBOARD *kb, Lisp_Object type)$/ +init_keyboard c-src/emacs/src/keyboard.c /^init_keyboard (void)$/ +init_registry cp-src/clheir.cpp /^void init_registry(void)$/ +init_tool_bar_items c-src/emacs/src/keyboard.c /^init_tool_bar_items (Lisp_Object reuse)$/ +inita c.c /^static void inita () {}$/ +initb c.c /^static void initb () {}$/ +initial_kboard c-src/emacs/src/keyboard.c 84 +initialize-new-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun initialize-new-tags-table ()$/ +initialize_random_junk cccp.y /^initialize_random_junk ()$/ +initialize_random_junk y-src/cccp.y /^initialize_random_junk ()$/ +input-pending-p c-src/emacs/src/keyboard.c /^DEFUN ("input-pending-p", Finput_pending_p, Sinput/ +input_available_clear_time c-src/emacs/src/keyboard.c 324 +input_pending c-src/emacs/src/keyboard.c 239 +input_polling_used c-src/emacs/src/keyboard.c /^input_polling_used (void)$/ +input_was_pending c-src/emacs/src/keyboard.c 287 +insert-abbrev-table-description c-src/abbrev.c /^DEFUN ("insert-abbrev-table-description", Finsert_/ +insertname pas-src/common.pas /^function insertname;(*($/ +instance_method ruby-src/test.rb /^ def instance_method$/ +instance_method_equals= ruby-src/test.rb /^ def instance_method_equals=$/ +instance_method_exclamation! ruby-src/test.rb /^ def instance_method_exclamation!$/ +instance_method_question? ruby-src/test.rb /^ def instance_method_question?$/ +instr y-src/parse.y 80 +instr parse.y 80 +instruct c-src/etags.c 2527 +intNumber go-src/test1.go 13 +integer c-src/emacs/src/lisp.h 2127 +integer cccp.y 113 +integer y-src/cccp.y 112 +integer_overflow cccp.y /^integer_overflow ()$/ +integer_overflow y-src/cccp.y /^integer_overflow ()$/ +integertonmstr pas-src/common.pas /^function integertonmstr; (* (TheInteger : integer)/ +intensity1 f-src/entry.for /^ & intensity1(efv,fv,svin,svquad,sfpv,maxp,val/ +intensity1 f-src/entry.strange_suffix /^ & intensity1(efv,fv,svin,svquad,sfpv,maxp,val/ +intensity1 f-src/entry.strange /^ & intensity1(efv,fv,svin,svquad,sfpv,maxp,val/ +interface_locate c-src/c.c /^interface_locate(void)$/ +intern c-src/emacs/src/lisp.h /^intern (const char *str)$/ +intern_c_string c-src/emacs/src/lisp.h /^intern_c_string (const char *str)$/ +internal_last_event_frame c-src/emacs/src/keyboard.c 228 +interpreters c-src/etags.c 197 +interrupt_input c-src/emacs/src/keyboard.c 328 +interrupt_input_blocked c-src/emacs/src/keyboard.c 76 +interrupt_input_blocked c-src/emacs/src/lisp.h 3048 +interrupts_deferred c-src/emacs/src/keyboard.c 331 +intoken c-src/etags.c /^#define intoken(c) (_itk[CHAR (c)]) \/* c can be in/ +intspec c-src/emacs/src/lisp.h 1688 +intvar c-src/emacs/src/lisp.h 2277 +invalidate_nodes c-src/etags.c /^invalidate_nodes (fdesc *badfdp, node **npp)$/ +ipc3dCSC19 cp-src/c.C 6 +ipc3dChannelType cp-src/c.C 1 +ipc3dIslandHierarchy cp-src/c.C 1 +ipc3dLinkControl cp-src/c.C 1 +irregular_location cp-src/clheir.hpp 47 +irregular_location cp-src/clheir.hpp /^ irregular_location(double xi, double yi, doubl/ +isComment php-src/lce_functions.php /^ function isComment($class)$/ +isHoliday cp-src/functions.cpp /^bool isHoliday ( Date d ){$/ +isLeap cp-src/functions.cpp /^bool isLeap ( int year ){$/ +is_curly_brace_form c-src/h.h 54 +is_explicit c-src/h.h 49 +is_func c-src/etags.c 221 +is_hor_space cccp.y 953 +is_hor_space y-src/cccp.y 953 +is_idchar cccp.y 948 +is_idchar y-src/cccp.y 948 +is_idstart cccp.y 950 +is_idstart y-src/cccp.y 950 +is_muldiv_operation cp-src/c.C /^is_muldiv_operation(pc)$/ +is_ordset prol-src/ordsets.prolog /^is_ordset(X) :- var(X), !, fail.$/ +iso_lispy_function_keys c-src/emacs/src/keyboard.c 5151 +isoperator prol-src/natded.prolog /^isoperator(Char):-$/ +isoptab prol-src/natded.prolog /^isoptab('%').$/ +iswhite c-src/etags.c /^#define iswhite(c) (_wht[CHAR (c)]) \/* c is white / +item_properties c-src/emacs/src/keyboard.c 7568 +jmp c-src/emacs/src/lisp.h 3044 +just_read_file c-src/etags.c /^just_read_file (FILE *inf)$/ +kbd_buffer c-src/emacs/src/keyboard.c 291 +kbd_buffer_events_waiting c-src/emacs/src/keyboard.c /^kbd_buffer_events_waiting (void)$/ +kbd_buffer_get_event c-src/emacs/src/keyboard.c /^kbd_buffer_get_event (KBOARD **kbp,$/ +kbd_buffer_nr_stored c-src/emacs/src/keyboard.c /^kbd_buffer_nr_stored (void)$/ +kbd_buffer_store_event c-src/emacs/src/keyboard.c /^kbd_buffer_store_event (register struct input_even/ +kbd_buffer_store_event_hold c-src/emacs/src/keyboard.c /^kbd_buffer_store_event_hold (register struct input/ +kbd_buffer_store_help_event c-src/emacs/src/keyboard.c /^kbd_buffer_store_help_event (Lisp_Object frame, Li/ +kbd_buffer_unget_event c-src/emacs/src/keyboard.c /^kbd_buffer_unget_event (register struct input_even/ +kbd_fetch_ptr c-src/emacs/src/keyboard.c 297 +kbd_store_ptr c-src/emacs/src/keyboard.c 302 +kboard c-src/emacs/src/keyboard.c 860 +kboard_stack c-src/emacs/src/keyboard.c 858 +kboard_stack c-src/emacs/src/keyboard.c 864 +key_and_value c-src/emacs/src/lisp.h 1868 +keyremap c-src/emacs/src/keyboard.c 8742 +keyremap c-src/emacs/src/keyboard.c 8754 +keyremap_step c-src/emacs/src/keyboard.c /^keyremap_step (Lisp_Object *keybuf, int bufsize, v/ +keys_of_keyboard c-src/emacs/src/keyboard.c /^keys_of_keyboard (void)$/ +keyval prol-src/natded.prolog /^keyval(key(Key,Val)) --> [Key,'='], valseq(Val).$/ +keyvalcgi prol-src/natded.prolog /^keyvalcgi(Key,Val):-$/ +keyvalscgi prol-src/natded.prolog /^keyvalscgi(KeyVals),$/ +keyvalseq prol-src/natded.prolog /^keyvalseq([KeyVal|KeyVals]) --> $/ +keyword_parsing cccp.y 73 +keyword_parsing y-src/cccp.y 73 +keywords cccp.y 115 +keywords y-src/cccp.y 114 +keywords y-src/cccp.y 306 +kind c-src/emacs/src/keyboard.c 11024 +kind c-src/h.h 46 +kset_echo_string c-src/emacs/src/keyboard.c /^kset_echo_string (struct kboard *kb, Lisp_Object v/ +kset_kbd_queue c-src/emacs/src/keyboard.c /^kset_kbd_queue (struct kboard *kb, Lisp_Object val/ +kset_keyboard_translate_table c-src/emacs/src/keyboard.c /^kset_keyboard_translate_table (struct kboard *kb, / +kset_last_prefix_arg c-src/emacs/src/keyboard.c /^kset_last_prefix_arg (struct kboard *kb, Lisp_Obje/ +kset_last_repeatable_command c-src/emacs/src/keyboard.c /^kset_last_repeatable_command (struct kboard *kb, L/ +kset_local_function_key_map c-src/emacs/src/keyboard.c /^kset_local_function_key_map (struct kboard *kb, Li/ +kset_overriding_terminal_local_map c-src/emacs/src/keyboard.c /^kset_overriding_terminal_local_map (struct kboard / +kset_real_last_command c-src/emacs/src/keyboard.c /^kset_real_last_command (struct kboard *kb, Lisp_Ob/ +kset_system_key_syms c-src/emacs/src/keyboard.c /^kset_system_key_syms (struct kboard *kb, Lisp_Obje/ +lang c-src/etags.c 208 +lang c-src/etags.c 251 +lang c-src/etags.c 259 +lang_names c-src/etags.c 718 +language c-src/etags.c 199 +last-tag el-src/emacs/lisp/progmodes/etags.el /^(defvar last-tag nil$/ +last_abbrev_point c-src/abbrev.c 79 +last_auto_save c-src/emacs/src/keyboard.c 214 +last_heapinfo c-src/emacs/src/gmalloc.c 402 +last_mouse_button c-src/emacs/src/keyboard.c 5215 +last_mouse_x c-src/emacs/src/keyboard.c 5216 +last_mouse_y c-src/emacs/src/keyboard.c 5217 +last_non_minibuf_size c-src/emacs/src/keyboard.c 207 +last_point_position c-src/emacs/src/keyboard.c 217 +last_state_size c-src/emacs/src/gmalloc.c 401 +last_undo_boundary c-src/emacs/src/keyboard.c 1287 +lasta c.c 272 +lastargmargin tex-src/texinfo.tex /^\\newskip\\deflastargmargin \\deflastargmargin=18pt$/ +lastargmargin tex-src/texinfo.tex /^\\setbox0=\\hbox{\\hskip \\deflastargmargin{\\rm #2}\\hs/ +lastb c.c 278 +lb c-src/etags.c 2923 +lbs c-src/etags.c 2924 +lce php-src/lce_functions.php /^ function lce()$/ +lce php-src/lce_functions.php /^ function lce()$/ +lce_bindtextdomain php-src/lce_functions.php /^ function lce_bindtextdomain($d_name, $d_path/ +lce_bindtextdomain php-src/lce_functions.php /^ function lce_bindtextdomain($domain, $path)$/ +lce_dgettext php-src/lce_functions.php /^ function lce_dgettext($domain, $msgid)$/ +lce_dgettext php-src/lce_functions.php /^ function lce_dgettext($domain, $msgid)$/ +lce_geteditcode php-src/lce_functions.php /^ function lce_geteditcode($type, $name, $text, $r/ +lce_gettext php-src/lce_functions.php /^ function lce_gettext($msgid)$/ +lce_gettext php-src/lce_functions.php /^ function lce_gettext($msgid)$/ +lce_textdomain php-src/lce_functions.php /^ function lce_textdomain($domain)$/ +lce_textdomain php-src/lce_functions.php /^ function lce_textdomain($domain)$/ +leasqr html-src/software.html /^Leasqr$/ +left c-src/etags.c 216 +left_shift cccp.y /^left_shift (a, b)$/ +left_shift y-src/cccp.y /^left_shift (a, b)$/ +len c-src/etags.c 237 +length c-src/etags.c 2495 +length cccp.y 44 +length cccp.y 114 +length y-src/cccp.y 44 +length y-src/cccp.y 113 +letter tex-src/texinfo.tex /^\\chapmacro {#1}{Appendix \\appendixletter}%$/ +letter tex-src/texinfo.tex /^ {#1}{Appendix \\appendixletter}{\\noexpand\\folio}}/ +letter tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\secheading {#1}{\\appendixlet/ +letter tex-src/texinfo.tex /^{#1}{\\appendixletter}{\\the\\secno}{\\noexpand\\folio}/ +letter tex-src/texinfo.tex /^\\subsecheading {#1}{\\appendixletter}{\\the\\secno}{\\/ +letter tex-src/texinfo.tex /^{#1}{\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\/ +letter tex-src/texinfo.tex /^ {\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\th/ +letter tex-src/texinfo.tex /^ {\\appendixletter}$/ +letter: tex-src/texinfo.tex /^\\xdef\\thischapter{Appendix \\appendixletter: \\noexp/ +level c-src/emacs/src/lisp.h 3153 +lex prol-src/natded.prolog /^lex(W,SynOut,Sem):-$/ +lexptr cccp.y 332 +lexptr y-src/cccp.y 332 +licenze html-src/softwarelibero.html /^Licenze d'uso di un programma$/ +limit cp-src/Range.h /^ double limit (void) const { return rng_limit; }$/ +line c-src/etags.c 2493 +line perl-src/htlmify-cystic 37 +line y-src/parse.y 86 +lineCount php-src/lce_functions.php /^ function lineCount($entry)$/ +linebuffer c-src/etags.c 239 +linebuffer_init c-src/etags.c /^linebuffer_init (linebuffer *lbp)$/ +linebuffer_setlen c-src/etags.c /^linebuffer_setlen (linebuffer *lbp, int toksize)$/ +lineno c-src/etags.c 2506 +lineno c-src/emacs/src/lisp.h 3147 +linepos c-src/etags.c 2507 +linepos c-src/etags.c 2922 +links html-src/software.html /^Links to interesting software$/ +lisp_eval_depth c-src/emacs/src/lisp.h 3045 +lisp_h_CHECK_LIST_CONS c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_LIST_CONS(x, y) CHECK_TYPE (C/ +lisp_h_CHECK_NUMBER c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_NUMBER(x) CHECK_TYPE (INTEGER/ +lisp_h_CHECK_SYMBOL c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_SYMBOL(x) CHECK_TYPE (SYMBOLP/ +lisp_h_CHECK_TYPE c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_TYPE(ok, predicate, x) \\$/ +lisp_h_CONSP c-src/emacs/src/lisp.h /^#define lisp_h_CONSP(x) (XTYPE (x) == Lisp_Cons)$/ +lisp_h_EQ c-src/emacs/src/lisp.h /^#define lisp_h_EQ(x, y) (XLI (x) == XLI (y))$/ +lisp_h_FLOATP c-src/emacs/src/lisp.h /^#define lisp_h_FLOATP(x) (XTYPE (x) == Lisp_Float)/ +lisp_h_INTEGERP c-src/emacs/src/lisp.h /^#define lisp_h_INTEGERP(x) ((XTYPE (x) & (Lisp_Int/ +lisp_h_MARKERP c-src/emacs/src/lisp.h /^#define lisp_h_MARKERP(x) (MISCP (x) && XMISCTYPE / +lisp_h_MISCP c-src/emacs/src/lisp.h /^#define lisp_h_MISCP(x) (XTYPE (x) == Lisp_Misc)$/ +lisp_h_NILP c-src/emacs/src/lisp.h /^#define lisp_h_NILP(x) EQ (x, Qnil)$/ +lisp_h_SET_SYMBOL_VAL c-src/emacs/src/lisp.h /^#define lisp_h_SET_SYMBOL_VAL(sym, v) \\$/ +lisp_h_SYMBOLP c-src/emacs/src/lisp.h /^#define lisp_h_SYMBOLP(x) (XTYPE (x) == Lisp_Symbo/ +lisp_h_SYMBOL_CONSTANT_P c-src/emacs/src/lisp.h /^#define lisp_h_SYMBOL_CONSTANT_P(sym) (XSYMBOL (sy/ +lisp_h_SYMBOL_VAL c-src/emacs/src/lisp.h /^#define lisp_h_SYMBOL_VAL(sym) \\$/ +lisp_h_VECTORLIKEP c-src/emacs/src/lisp.h /^#define lisp_h_VECTORLIKEP(x) (XTYPE (x) == Lisp_V/ +lisp_h_XCAR c-src/emacs/src/lisp.h /^#define lisp_h_XCAR(c) XCONS (c)->car$/ +lisp_h_XCDR c-src/emacs/src/lisp.h /^#define lisp_h_XCDR(c) XCONS (c)->u.cdr$/ +lisp_h_XCONS c-src/emacs/src/lisp.h /^#define lisp_h_XCONS(a) \\$/ +lisp_h_XFASTINT c-src/emacs/src/lisp.h /^# define lisp_h_XFASTINT(a) XINT (a)$/ +lisp_h_XHASH c-src/emacs/src/lisp.h /^#define lisp_h_XHASH(a) XUINT (a)$/ +lisp_h_XIL c-src/emacs/src/lisp.h /^# define lisp_h_XIL(i) ((Lisp_Object) { i })$/ +lisp_h_XIL c-src/emacs/src/lisp.h /^# define lisp_h_XIL(i) (i)$/ +lisp_h_XINT c-src/emacs/src/lisp.h /^# define lisp_h_XINT(a) (XLI (a) >> INTTYPEBITS)$/ +lisp_h_XLI c-src/emacs/src/lisp.h /^# define lisp_h_XLI(o) ((o).i)$/ +lisp_h_XLI c-src/emacs/src/lisp.h /^# define lisp_h_XLI(o) (o)$/ +lisp_h_XPNTR c-src/emacs/src/lisp.h /^#define lisp_h_XPNTR(a) \\$/ +lisp_h_XSYMBOL c-src/emacs/src/lisp.h /^# define lisp_h_XSYMBOL(a) \\$/ +lisp_h_XTYPE c-src/emacs/src/lisp.h /^# define lisp_h_XTYPE(a) ((enum Lisp_Type) (XLI (a/ +lisp_h_XUNTAG c-src/emacs/src/lisp.h /^# define lisp_h_XUNTAG(a, type) ((void *) (intptr_/ +lisp_h_check_cons_list c-src/emacs/src/lisp.h /^# define lisp_h_check_cons_list() ((void) 0)$/ +lisp_h_make_number c-src/emacs/src/lisp.h /^# define lisp_h_make_number(n) \\$/ +lispy_accent_codes c-src/emacs/src/keyboard.c 4634 +lispy_accent_keys c-src/emacs/src/keyboard.c 4741 +lispy_drag_n_drop_names c-src/emacs/src/keyboard.c 5181 +lispy_function_keys c-src/emacs/src/keyboard.c 4768 +lispy_function_keys c-src/emacs/src/keyboard.c 5065 +lispy_kana_keys c-src/emacs/src/keyboard.c 5026 +lispy_modifier_list c-src/emacs/src/keyboard.c /^lispy_modifier_list (int modifiers)$/ +lispy_multimedia_keys c-src/emacs/src/keyboard.c 4962 +lispy_wheel_names c-src/emacs/src/keyboard.c 5174 +list c-src/emacs/src/gmalloc.c 186 +list-tags el-src/emacs/lisp/progmodes/etags.el /^(defun list-tags (file &optional _next-match)$/ +list-tags-function el-src/emacs/lisp/progmodes/etags.el /^(defvar list-tags-function nil$/ +list2i c-src/emacs/src/lisp.h /^list2i (EMACS_INT x, EMACS_INT y)$/ +list3i c-src/emacs/src/lisp.h /^list3i (EMACS_INT x, EMACS_INT y, EMACS_INT w)$/ +list4i c-src/emacs/src/lisp.h /^list4i (EMACS_INT x, EMACS_INT y, EMACS_INT w, EMA/ +list_to_ord_set prol-src/ordsets.prolog /^list_to_ord_set(List, Set) :-$/ +lno c-src/etags.c 223 +load objc-src/PackInsp.m /^-load$/ +loadContentsOf objc-src/PackInsp.m /^-loadContentsOf:(const char *)type inTable:(HashTa/ +loadImage objc-src/PackInsp.m /^-loadImage$/ +loadKeyValuesFrom objc-src/PackInsp.m /^-loadKeyValuesFrom:(const char *)type inTable:(Has/ +loadPORManager php-src/lce_functions.php /^ function &loadPORManager()$/ +local_if_set c-src/emacs/src/lisp.h 2338 +location cp-src/clheir.hpp 33 +location cp-src/clheir.hpp /^ location() { }$/ +lookup cccp.y /^lookup (name, len, hash)$/ +lookup y-src/cccp.y /^lookup (name, len, hash)$/ +lowcase c-src/etags.c /^#define lowcase(c) tolower (CHAR (c))$/ +lucid_event_type_list_p c-src/emacs/src/keyboard.c /^lucid_event_type_list_p (Lisp_Object object)$/ +mabort c-src/emacs/src/gmalloc.c /^mabort (enum mcheck_status status)$/ +mach_host_self c-src/machsyscalls.h /^SYSCALL (mach_host_self, -29,$/ +mach_msg_trap c-src/machsyscalls.h /^SYSCALL (mach_msg_trap, -25,$/ +mach_reply_port c-src/machsyscalls.h /^SYSCALL (mach_reply_port, -26,$/ +mach_task_self c-src/machsyscalls.h /^SYSCALL (mach_task_self, -28,$/ +mach_thread_self c-src/machsyscalls.h /^SYSCALL (mach_thread_self, -27,$/ +magic c-src/emacs/src/gmalloc.c 1863 - main::f1 perl-src/kai-test.pl /^sub f1 {$/ - main::f2 perl-src/kai-test.pl /^sub main::f2 {$/ - main::f7 perl-src/kai-test.pl /^sub f7 {$/ - main::file_end perl-src/htlmify-cystic /^sub file_end ()$/ - main::finish_appendices perl-src/htlmify-cystic /^sub finish_appendices ()$/ - main::finish_sections perl-src/htlmify-cystic /^sub finish_sections ()$/ - main::finish_subsections perl-src/htlmify-cystic /^sub finish_subsections ()$/ - main::finish_subsubsections perl-src/htlmify-cystic /^sub finish_subsubsections ()$/ - main::getopt perl-src/yagrip.pl /^sub getopt {$/ - main::read_toc perl-src/htlmify-cystic /^sub read_toc ()$/ - main::section_href perl-src/htlmify-cystic /^sub section_href ($)$/ - main::section_name perl-src/htlmify-cystic /^sub section_name ($)$/ - main::section_url perl-src/htlmify-cystic /^sub section_url ()$/ - main::section_url_base perl-src/htlmify-cystic /^sub section_url_base ()$/ - main::section_url_name perl-src/htlmify-cystic /^sub section_url_name ()$/ - main::toc_line perl-src/htlmify-cystic /^sub toc_line ($)$/ - main::usage perl-src/yagrip.pl /^sub usage {$/ +maintaining.info make-src/Makefile /^maintaining.info: maintaining.texi$/ +make-abbrev-table c-src/abbrev.c /^DEFUN ("make-abbrev-table", Fmake_abbrev_table, Sm/ +make_C_tag c-src/etags.c /^make_C_tag (bool isfun)$/ +make_coor prol-src/natded.prolog /^make_coor(s(_),Alpha,Sem1,Sem2,Alpha@Sem1@Sem2).$/ +make_ctrl_char c-src/emacs/src/keyboard.c /^make_ctrl_char (int c)$/ +make_fixnum_or_float c-src/emacs/src/lisp.h /^#define make_fixnum_or_float(val) \\$/ +make_formatted_string c-src/emacs/src/lisp.h /^extern Lisp_Object make_formatted_string (char *, / +make_lisp_ptr c-src/emacs/src/lisp.h /^make_lisp_ptr (void *ptr, enum Lisp_Type type)$/ +make_lisp_symbol c-src/emacs/src/lisp.h /^make_lisp_symbol (struct Lisp_Symbol *sym)$/ +make_lispy_event c-src/emacs/src/keyboard.c /^make_lispy_event (struct input_event *event)$/ +make_lispy_focus_in c-src/emacs/src/keyboard.c /^make_lispy_focus_in (Lisp_Object frame)$/ +make_lispy_focus_out c-src/emacs/src/keyboard.c /^make_lispy_focus_out (Lisp_Object frame)$/ +make_lispy_movement c-src/emacs/src/keyboard.c /^make_lispy_movement (struct frame *frame, Lisp_Obj/ +make_lispy_position c-src/emacs/src/keyboard.c /^make_lispy_position (struct frame *f, Lisp_Object / +make_lispy_switch_frame c-src/emacs/src/keyboard.c /^make_lispy_switch_frame (Lisp_Object frame)$/ +make_number c-src/emacs/src/lisp.h /^# define make_number(n) lisp_h_make_number (n)$/ +make_pointer_integer c-src/emacs/src/lisp.h /^make_pointer_integer (void *p)$/ +make_scroll_bar_position c-src/emacs/src/keyboard.c /^make_scroll_bar_position (struct input_event *ev, / +make_tag c-src/etags.c /^make_tag (const char *name, \/* tag name, or NULL / +make_uninit_sub_char_table c-src/emacs/src/lisp.h /^make_uninit_sub_char_table (int depth, int min_cha/ +make_uninit_vector c-src/emacs/src/lisp.h /^make_uninit_vector (ptrdiff_t size)$/ +malloc c-src/emacs/src/gmalloc.c 64 +malloc c-src/emacs/src/gmalloc.c 68 +malloc c-src/emacs/src/gmalloc.c /^extern void *malloc (size_t size) ATTRIBUTE_MALLOC/ +malloc c-src/emacs/src/gmalloc.c /^malloc (size_t size)$/ +malloc c-src/emacs/src/gmalloc.c 1715 +malloc_atfork_handler_child c-src/emacs/src/gmalloc.c /^malloc_atfork_handler_child (void)$/ +malloc_atfork_handler_parent c-src/emacs/src/gmalloc.c /^malloc_atfork_handler_parent (void)$/ +malloc_atfork_handler_prepare c-src/emacs/src/gmalloc.c /^malloc_atfork_handler_prepare (void)$/ +malloc_enable_thread c-src/emacs/src/gmalloc.c /^malloc_enable_thread (void)$/ +malloc_info c-src/emacs/src/gmalloc.c 167 +malloc_initialize_1 c-src/emacs/src/gmalloc.c /^malloc_initialize_1 (void)$/ +mallochook c-src/emacs/src/gmalloc.c /^mallochook (size_t size)$/ +man manpage make-src/Makefile /^man manpage: etags.1.man$/ +mao c-src/h.h 101 +map c-src/emacs/src/keyboard.c 8748 +map_word prol-src/natded.prolog /^map_word([[_]|Ws],Exp):-$/ +mapping html-src/algrthms.html /^Mapping the Channel Symbols$/ +mapsyn prol-src/natded.prolog /^mapsyn(A\/B,AM\/BM):-$/ +mark_kboards c-src/emacs/src/keyboard.c /^mark_kboards (void)$/ +max c.c /^max (int a, int b)$/ +max c.c /^__attribute__ ((always_inline)) max (int a, int b)/ +max c-src/emacs/src/lisp.h 58 +max c-src/emacs/src/lisp.h /^#define max(a, b) ((a) > (b) ? (a) : (b))$/ +max cp-src/conway.cpp /^#define max(x,y) ((x > y) ? x : y)$/ +max_args c-src/emacs/src/lisp.h 1686 +max_num_directions cp-src/clheir.hpp 31 +max_num_generic_objects cp-src/clheir.cpp 9 +maxargs c-src/emacs/src/lisp.h 2831 +maybe_gc c-src/emacs/src/lisp.h /^maybe_gc (void)$/ +mcCSC cp-src/c.C 6 +mcheck c-src/emacs/src/gmalloc.c /^mcheck (void (*func) (enum mcheck_status))$/ +mcheck_status c-src/emacs/src/gmalloc.c 283 +mcheck_used c-src/emacs/src/gmalloc.c 2012 +me22b lua-src/test.lua /^ local function test.me22b (one)$/ +me_22a lua-src/test.lua /^ function test.me_22a(one, two)$/ +memalign c-src/emacs/src/gmalloc.c /^memalign (size_t alignment, size_t size)$/ +member prol-src/natded.prolog /^member(X,[X|_]).$/ +memclear c-src/emacs/src/lisp.h /^memclear (void *p, ptrdiff_t nbytes)$/ +menu_bar_item c-src/emacs/src/keyboard.c /^menu_bar_item (Lisp_Object key, Lisp_Object item, / +menu_bar_items c-src/emacs/src/keyboard.c /^menu_bar_items (Lisp_Object old)$/ +menu_bar_items_index c-src/emacs/src/keyboard.c 7369 +menu_bar_items_vector c-src/emacs/src/keyboard.c 7368 +menu_bar_one_keymap_changed_items c-src/emacs/src/keyboard.c 7363 +menu_item_eval_property c-src/emacs/src/keyboard.c /^menu_item_eval_property (Lisp_Object sexpr)$/ +menu_item_eval_property_1 c-src/emacs/src/keyboard.c /^menu_item_eval_property_1 (Lisp_Object arg)$/ +menu_separator_name_p c-src/emacs/src/keyboard.c /^menu_separator_name_p (const char *label)$/ +metasource c-src/etags.c 198 +min c-src/emacs/src/gmalloc.c /^#define min(a, b) ((a) < (b) ? (a) : (b))$/ +min c-src/emacs/src/lisp.h 57 +min c-src/emacs/src/lisp.h /^#define min(a, b) ((a) < (b) ? (a) : (b))$/ +min cp-src/conway.cpp /^#define min(x,y) ((x > y) ? y : x)$/ +min_args c-src/emacs/src/lisp.h 1686 +min_char c-src/emacs/src/lisp.h 1621 +minus cp-src/functions.cpp /^void Date::minus ( int days , int month , int year/ +miti html-src/softwarelibero.html /^Sfatiamo alcuni miti$/ +modifier_names c-src/emacs/src/keyboard.c 6319 +modifier_symbols c-src/emacs/src/keyboard.c 6327 +modify_event_symbol c-src/emacs/src/keyboard.c /^modify_event_symbol (ptrdiff_t symbol_num, int mod/ +module_class_method ruby-src/test.rb /^ def ModuleExample.module_class_method$/ +module_instance_method ruby-src/test.rb /^ def module_instance_method$/ +more= ruby-src/test1.ru /^ :more$/ +more_aligned_int c.c 165 +morecore_nolock c-src/emacs/src/gmalloc.c /^morecore_nolock (size_t size)$/ +morecore_recursing c-src/emacs/src/gmalloc.c 604 +mouse_syms c-src/emacs/src/keyboard.c 4627 +move cp-src/clheir.cpp /^void agent::move(int direction)$/ +mprobe c-src/emacs/src/gmalloc.c /^mprobe (void *ptr)$/ +msgid php-src/lce_functions.php /^ function msgid($line, $class)$/ +msgstr php-src/lce_functions.php /^ function msgstr($line, $class)$/ +mstats c-src/emacs/src/gmalloc.c 308 +mt prol-src/natded.prolog /^mt:-$/ +mtg html-src/software.html /^MTG$/ +multi_line c-src/etags.c 267 +multibyte c-src/emacs/src/regex.h 403 +my_printf c.c /^my_printf (void *my_object, const char *my_format,/ +my_struct c.c 226 +my_struct c-src/h.h 91 +my_typedef c.c 228 +my_typedef c-src/h.h 93 +n c-src/exit.c 28 +n c-src/exit.strange_suffix 28 +name c-src/getopt.h 76 +name c-src/getopt.h 78 +name c-src/etags.c 192 +name c-src/etags.c 218 +name c-src/etags.c 261 +name c-src/etags.c 2271 +name c-src/emacs/src/keyboard.c 7241 +name c-src/emacs/src/lisp.h 1808 +name c-src/emacs/src/lisp.h 3144 +name perl-src/htlmify-cystic 357 +name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\defunargs{#3}\\endgrou/ +name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Function}%$/ +name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#1} #2}{Function}%$/ +name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#2} #3}{#1}%$/ +name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Macro}%$/ +name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Special Form}%$/ +name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{\\defoptype{} on #1}%$/ +name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{Method on #1}%$/ +name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{\\defcvtype{} of #1}%$/ +name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{Instance Variable of #1}%/ +name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\defvarargs{#3}\\endgro/ +name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Variable}%$/ +name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{User Option}%$/ +name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#1} #2}{Variable}%$/ +name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#2} #3}{#1}$/ +name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\deftpargs{#3}\\endgrou/ +name cccp.y 43 +name cccp.y 114 +name cccp.y 114 +name y-src/cccp.y 43 +name y-src/cccp.y 113 +name y-src/cccp.y 113 +named c-src/etags.c 2505 +namestringequal pas-src/common.pas /^function namestringequal;(*(var Name1,Name2 : Name/ +neighbors cp-src/clheir.hpp 59 +nelem cp-src/Range.h /^ int nelem (void) const { return rng_nelem; }$/ +nestlev c-src/etags.c 2525 +new objc-src/PackInsp.m /^+new$/ +new perl-src/htlmify-cystic 163 +new_tag perl-src/htlmify-cystic 18 +newlb c-src/etags.c 2930 +newlinepos c-src/etags.c 2932 +newtextstring pas-src/common.pas /^function newtextstring; (*: TextString;*)$/ +next c.c 174 +next c-src/etags.c 203 +next c-src/emacs/src/gmalloc.c 164 +next c-src/emacs/src/gmalloc.c 188 +next c-src/emacs/src/gmalloc.c 198 +next c-src/emacs/src/keyboard.c 861 +next c-src/emacs/src/keyboard.c 7246 +next c-src/emacs/src/lisp.h 700 +next c-src/emacs/src/lisp.h 1848 +next c-src/emacs/src/lisp.h 2192 +next c-src/emacs/src/lisp.h 3028 +next c-src/emacs/src/lisp.h 3134 +next cccp.y 42 +next y-src/cccp.y 42 +next-file el-src/emacs/lisp/progmodes/etags.el /^(defun next-file (&optional initialize novisit)$/ +next-file-list el-src/emacs/lisp/progmodes/etags.el /^(defvar next-file-list nil$/ +next_alive cp-src/conway.hpp 7 +next_almost_prime c-src/emacs/src/lisp.h /^extern EMACS_INT next_almost_prime (EMACS_INT) ATT/ +next_free c-src/emacs/src/lisp.h 1851 +next_weak c-src/emacs/src/lisp.h 1875 +nextfree c-src/emacs/src/lisp.h 3029 +nfree c-src/emacs/src/gmalloc.c 150 +nl c-src/etags.c 2521 +no tex-src/texinfo.tex /^\\newcount \\appendixno \\appendixno = `\\@$/ +no tex-src/texinfo.tex /^\\global\\advance \\appendixno by 1 \\message{Appendix/ +no tex-src/texinfo.tex /^\\ifnum\\secno=0 Appendix\\xreftie'char\\the\\appendixn/ +no.\the\secno tex-src/texinfo.tex /^\\else \\ifnum \\subsecno=0 Section\\xreftie'char\\the\\/ +no.\the\secno.\the\subsecno tex-src/texinfo.tex /^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/ +no.\the\secno.\the\subsecno.\the\subsubsecno tex-src/texinfo.tex /^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/ +no_argument c-src/getopt.h 89 +no_lang_help c-src/etags.c 707 +no_sub c-src/emacs/src/regex.h 387 +nocase_tail c-src/etags.c /^nocase_tail (const char *cp)$/ +node c-src/etags.c 225 +node_st c-src/etags.c 214 +noderef tex-src/texinfo.tex /^\\appendixnoderef %$/ +noderef tex-src/texinfo.tex /^\\appendixnoderef %$/ +noderef tex-src/texinfo.tex /^\\appendixnoderef %$/ +noderef tex-src/texinfo.tex /^\\appendixnoderef %$/ +nofonts tex-src/texinfo.tex /^{\\indexnofonts$/ +nofonts tex-src/texinfo.tex /^{\\indexnofonts$/ +nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/ +nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/ +nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/ +nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/ +nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/ +nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/ +nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/ +nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/ +nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/ +nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/ +nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/ +nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/ +none_help c-src/etags.c 703 +normalize prol-src/natded.prolog /^normalize(M,MNorm):-$/ +normalize_fresh prol-src/natded.prolog /^normalize_fresh(M,N):-$/ +normalize_tree prol-src/natded.prolog /^normalize_tree(tree(Rule,Syn:Sem,Trees),$/ +normalize_trees prol-src/natded.prolog /^normalize_trees([],[]).$/ +nosave pyt-src/server.py /^ def nosave(self):$/ +nosave pyt-src/server.py /^ def nosave(self):$/ +nosave pyt-src/server.py /^ def nosave(self):$/ +not_bol c-src/emacs/src/regex.h 391 +not_eol c-src/emacs/src/regex.h 394 +not_single_kboard_state c-src/emacs/src/keyboard.c /^not_single_kboard_state (KBOARD *kboard)$/ +notag2 c-src/torture.c 26 +notag2 c-src/dostorture.c 26 +notag4 c-src/torture.c 45 +notag4 c-src/dostorture.c 45 +notinname c-src/etags.c /^#define notinname(c) (_nin[CHAR (c)]) \/* c is not / +npending c-src/emacs/src/keyboard.c 7244 +ntool_bar_items c-src/emacs/src/keyboard.c 7974 +numOfChannels cp-src/c.C 1 +num_columns cp-src/conway.cpp 16 +num_input_events c-src/emacs/src/keyboard.c 210 +num_regs c-src/emacs/src/regex.h 430 +num_rows cp-src/conway.cpp 15 +numberKeys objcpp-src/SimpleCalc.M /^- numberKeys:sender$/ +number_len c-src/etags.c /^static int number_len (long) ATTRIBUTE_CONST;$/ +numbervars prol-src/natded.prolog /^numbervars(X):-$/ +nvars c-src/emacs/src/lisp.h 3140 +objdef c-src/etags.c 2484 +object c-src/emacs/src/lisp.h 2128 +object_registry cp-src/clheir.cpp 10 +objtag c-src/etags.c 2453 +objvar c-src/emacs/src/lisp.h 2297 +obstack_chunk_alloc y-src/parse.y 46 +obstack_chunk_alloc parse.y 46 +obstack_chunk_free y-src/parse.y 47 +obstack_chunk_free parse.y 47 +ocatseen c-src/etags.c 2477 +octave_MDiagArray2_h cp-src/MDiagArray2.h 29 +octave_Range_h cp-src/Range.h 24 +oediff make-src/Makefile /^oediff: OTAGS ETAGS ${infiles}$/ +offset c-src/etags.c 2494 +offset c-src/emacs/src/lisp.h 2305 +offset c-src/emacs/src/lisp.h 2365 +oignore c-src/etags.c 2483 +oimplementation c-src/etags.c 2474 +oinbody c-src/etags.c 2478 +ok objc-src/PackInsp.m /^-ok:sender$/ +ok_to_echo_at_next_pause c-src/emacs/src/keyboard.c 159 +omethodcolon c-src/etags.c 2481 +omethodparm c-src/etags.c 2482 +omethodsign c-src/etags.c 2479 +omethodtag c-src/etags.c 2480 +onone c-src/etags.c 2472 +oparenseen c-src/etags.c 2476 +open objc-src/PackInsp.m /^-open:sender$/ +open-dribble-file c-src/emacs/src/keyboard.c /^DEFUN ("open-dribble-file", Fopen_dribble_file, So/ +openInWorkspace objc-src/PackInsp.m /^static void openInWorkspace(const char *filename)$/ +operationKeys objcpp-src/SimpleCalc.M /^- operationKeys:sender$/ +operator cccp.y 438 +operator y-src/cccp.y 438 +operator ++ cp-src/functions.cpp /^Date & Date::operator ++ ( void ){$/ +operator += cp-src/functions.cpp /^Date & Date::operator += ( int days ){$/ +operator - cp-src/c.C /^void operator -(int, int) {}$/ +operator - cp-src/functions.cpp /^int Date::operator - ( Date d ){$/ +operator -- cp-src/functions.cpp /^Date & Date::operator -- ( void ){$/ +operator -= cp-src/functions.cpp /^Date & Date::operator -= ( int days ){$/ +operator < cp-src/functions.cpp /^int Date::operator < ( Date d ) {$/ +operator << cp-src/functions.cpp /^ostream& operator << ( ostream &c, Date d ) {$/ +operator = cp-src/functions.cpp /^Date & Date::operator = ( Date d ){$/ +operator = cp-src/MDiagArray2.h /^ MDiagArray2& operator = (const MDiagArray2/ +operator == cp-src/functions.cpp /^int Date::operator == ( Date d ) {$/ +operator > cp-src/functions.cpp /^int Date::operator > ( Date d ) {$/ +operator >> cp-src/functions.cpp /^istream& operator >> ( istream &i, Date & dd ){$/ +operator MArray2 cp-src/MDiagArray2.h /^ operator MArray2 () const$/ +operator int cp-src/c.C /^void operator int(int, int) {}$/ +operator int cp-src/fail.C /^ operator int() const {return x;}$/ +operator+ cp-src/c.C /^const A& A::operator+(const A&) { }$/ +operator+ cp-src/c.C /^void operator+(int, int) {}$/ +operator+ cp-src/c.C /^ A operator+(A& a) {};$/ +opparsebody\Edefop\defopx\defopheader\defoptype tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/ +oprotocol c-src/etags.c 2473 +option c-src/getopt.h 73 +optional_argument c-src/getopt.h 91 +opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/ +ord_add_element prol-src/ordsets.prolog /^ord_add_element([], Element, [Element]).$/ +ord_del_element prol-src/ordsets.prolog /^ord_del_element([], _, []).$/ +ord_disjoint prol-src/ordsets.prolog /^ord_disjoint(Set1, Set2) :-$/ +ord_intersect prol-src/ordsets.prolog /^ord_intersect([Head1|Tail1], [Head2|Tail2]) :-$/ +ord_intersection prol-src/ordsets.prolog /^ord_intersection([], _, []).$/ +ord_intersection prol-src/ordsets.prolog /^ord_intersection([], Set2, [], Set2).$/ +ord_intersection prol-src/ordsets.prolog /^ord_intersection(Sets, Intersection) :- $/ +ord_intersection2 prol-src/ordsets.prolog /^ord_intersection2(1, [Set|Sets], Set0, Sets0) :- !/ +ord_intersection3 prol-src/ordsets.prolog /^ord_intersection3(<, _, Set1, Head2, Tail2, Inters/ +ord_intersection4 prol-src/ordsets.prolog /^ord_intersection4(<, _, Set1, Head2, Tail2, Inters/ +ord_member prol-src/ordsets.prolog /^ord_member(X, [E|Es]) :-$/ +ord_seteq prol-src/ordsets.prolog /^ord_seteq(Set1, Set2) :-$/ +ord_setproduct prol-src/ordsets.prolog /^ord_setproduct([], _, []).$/ +ord_subset prol-src/ordsets.prolog /^ord_subset([], _).$/ +ord_subtract prol-src/ordsets.prolog /^ord_subtract(Set1, Set2, Union) :-$/ +ord_symdiff prol-src/ordsets.prolog /^ord_symdiff([], Set2, Set2).$/ +ord_union prol-src/ordsets.prolog /^ord_union(Set1, Set2, Union) :-$/ +ord_union prol-src/ordsets.prolog /^ord_union([], Union) :- !, Union = [].$/ +ord_union4 prol-src/ordsets.prolog /^ord_union4(<, Head, Set1, Head2, Tail2, [Head|Unio/ +ord_union_all prol-src/ordsets.prolog /^ord_union_all(1, [Set|Sets], Set, Sets) :- !.$/ +oss html-src/softwarelibero.html /^Il movimento open source$/ +otagseen c-src/etags.c 2475 +outputTime cp-src/c.C 9 +output_file perl-src/htlmify-cystic 35 +output_files perl-src/htlmify-cystic 32 +outputtable html-src/algrthms.html /^Output$/ +outsyn prol-src/natded.prolog /^outsyn(['Any'],_).$/ +p c-src/emacs/src/lisp.h 4673 +p c-src/emacs/src/lisp.h 4679 +p/f ada-src/etags-test-for.ada /^ function p pragma Import (C,$/ +p/f ada-src/etags-test-for.ada /^function p ("p");$/ +pD c-src/emacs/src/lisp.h 165 +pD c-src/emacs/src/lisp.h 167 +pD c-src/emacs/src/lisp.h 169 +pD c-src/emacs/src/lisp.h 171 +pI c-src/emacs/src/lisp.h 94 +pI c-src/emacs/src/lisp.h 99 +pI c-src/emacs/src/lisp.h 106 +pMd c-src/emacs/src/lisp.h 150 +pMd c-src/emacs/src/lisp.h 155 +pMu c-src/emacs/src/lisp.h 151 +pMu c-src/emacs/src/lisp.h 156 +p_next c-src/etags.c 258 +pagesize c-src/emacs/src/gmalloc.c 1703 +parent c-src/emacs/src/keyboard.c 8745 +parent c-src/emacs/src/lisp.h 1590 +parse prol-src/natded.prolog /^parse(Ws,Cat):-$/ +parseFromVars php-src/lce_functions.php /^ function parseFromVars($prefix)$/ +parse_c_expression cccp.y /^parse_c_expression (string)$/ +parse_c_expression y-src/cccp.y /^parse_c_expression (string)$/ +parse_cgi prol-src/natded.prolog /^parse_cgi(TokenList,KeyVals):-$/ +parse_error y-src/parse.y 81 +parse_error parse.y 81 +parse_escape cccp.y /^parse_escape (string_ptr)$/ +parse_escape y-src/cccp.y /^parse_escape (string_ptr)$/ +parse_hash y-src/parse.y 63 +parse_hash parse.y 63 +parse_menu_item c-src/emacs/src/keyboard.c /^parse_menu_item (Lisp_Object item, int inmenubar)$/ +parse_modifiers c-src/emacs/src/keyboard.c /^parse_modifiers (Lisp_Object symbol)$/ +parse_modifiers_uncached c-src/emacs/src/keyboard.c /^parse_modifiers_uncached (Lisp_Object symbol, ptrd/ +parse_number cccp.y /^parse_number (olen)$/ +parse_number y-src/cccp.y /^parse_number (olen)$/ +parse_return y-src/parse.y 73 +parse_return parse.y 73 +parse_return_error cccp.y 70 +parse_return_error y-src/cccp.y 70 +parse_solitary_modifier c-src/emacs/src/keyboard.c /^parse_solitary_modifier (Lisp_Object symbol)$/ +parse_tool_bar_item c-src/emacs/src/keyboard.c /^parse_tool_bar_item (Lisp_Object key, Lisp_Object / +pat c-src/etags.c 262 +pattern c-src/etags.c 260 +pdlcount c-src/emacs/src/lisp.h 3046 +pending-delete-mode el-src/TAGTEST.EL /^(defalias 'pending-delete-mode 'delete-selection-m/ +pending_funcalls c-src/emacs/src/keyboard.c 4377 +pending_signals c-src/emacs/src/keyboard.c 80 +pfatal c-src/etags.c /^pfatal (const char *s1)$/ +pfdset c-src/h.h 57 +pfnote c-src/etags.c /^pfnote (char *name, bool is_func, char *linestart,/ +plain_C_entries c-src/etags.c /^plain_C_entries (FILE *inf)$/ +plain_C_suffixes c-src/etags.c 643 +plainc c-src/etags.c 2934 +plist c-src/emacs/src/lisp.h 697 +plus cp-src/functions.cpp /^void Date::plus ( int days , int month , int year / +plus go-src/test1.go 5 +plusvalseq prol-src/natded.prolog /^plusvalseq([]) --> [].$/ +pointer c-src/emacs/src/lisp.h 2125 +poll_for_input c-src/emacs/src/keyboard.c /^poll_for_input (struct atimer *timer)$/ +poll_for_input_1 c-src/emacs/src/keyboard.c /^poll_for_input_1 (void)$/ +poll_suppress_count c-src/emacs/src/keyboard.c 1908 +poll_suppress_count c-src/emacs/src/lisp.h 3047 +poll_timer c-src/emacs/src/keyboard.c 1915 +pop-tag-mark el-src/emacs/lisp/progmodes/etags.el /^(defalias 'pop-tag-mark 'xref-pop-marker-stack)$/ +pop_kboard c-src/emacs/src/keyboard.c /^pop_kboard (void)$/ +popclass_above c-src/etags.c /^popclass_above (int bracelev)$/ +position_to_Time c-src/emacs/src/keyboard.c /^position_to_Time (ptrdiff_t pos)$/ +posix_memalign c-src/emacs/src/gmalloc.c /^posix_memalign (void **memptr, size_t alignment, s/ +posn-at-point c-src/emacs/src/keyboard.c /^DEFUN ("posn-at-point", Fposn_at_point, Sposn_at_p/ +posn-at-x-y c-src/emacs/src/keyboard.c /^DEFUN ("posn-at-x-y", Fposn_at_x_y, Sposn_at_x_y, / +possible_sum_sign cccp.y /^#define possible_sum_sign(a, b, sum) ((((a) ^ (b))/ +possible_sum_sign y-src/cccp.y /^#define possible_sum_sign(a, b, sum) ((((a) ^ (b))/ +post pyt-src/server.py /^ def post(self):$/ +post pyt-src/server.py /^ def post(self):$/ +pot_etags_version c-src/etags.c 81 +pp1 c-src/torture.c /^int pp1($/ +pp1 c-src/dostorture.c /^int pp1($/ +pp2 c-src/torture.c /^pp2$/ +pp2 c-src/dostorture.c /^pp2$/ +pp3 c-src/torture.c /^pp3(int bar)$/ +pp3 c-src/dostorture.c /^pp3(int bar)$/ +pp_bas_cat prol-src/natded.prolog /^pp_bas_cat(Cat):-$/ +pp_cat prol-src/natded.prolog /^pp_cat(Syn:Sem):-$/ +pp_exp prol-src/natded.prolog /^pp_exp('NIL'):-$/ +pp_exps prol-src/natded.prolog /^pp_exps([]).$/ +pp_html_fitch_tree prol-src/natded.prolog /^pp_html_fitch_tree(tree(der,Root,[ders(Words)]),M,/ +pp_html_table_fitch_tree prol-src/natded.prolog /^pp_html_table_fitch_tree(T):-$/ +pp_html_table_tree prol-src/natded.prolog /^pp_html_table_tree(T):-$/ +pp_html_tree prol-src/natded.prolog /^pp_html_tree(ass(Syn,V,'$VAR'(N))):-$/ +pp_html_trees prol-src/natded.prolog /^pp_html_trees([T|Ts],N,M):-$/ +pp_lam prol-src/natded.prolog /^pp_lam(Var^Alpha):-$/ +pp_lam_bracket prol-src/natded.prolog /^pp_lam_bracket(A^B):-$/ +pp_lam_paren prol-src/natded.prolog /^pp_lam_paren(Var^Alpha):-$/ +pp_paren prol-src/natded.prolog /^pp_paren(C):-$/ +pp_rule prol-src/natded.prolog /^pp_rule(fe):-write('\/E').$/ +pp_syn prol-src/natded.prolog /^pp_syn(A\/B):-$/ +pp_syn_back prol-src/natded.prolog /^pp_syn_back(A\/B):-$/ +pp_syn_paren prol-src/natded.prolog /^pp_syn_paren(A\/B):-$/ +pp_tree prol-src/natded.prolog /^pp_tree(T):-$/ +pp_trees prol-src/natded.prolog /^pp_trees([T|Ts],Column):-$/ +pp_word prol-src/natded.prolog /^pp_word(W):-$/ +pp_word_list prol-src/natded.prolog /^pp_word_list([]).$/ +pp_word_list_rest prol-src/natded.prolog /^pp_word_list_rest([]).$/ +predicate c-src/emacs/src/lisp.h 2307 +prev c.c 175 +prev c-src/emacs/src/gmalloc.c 165 +prev c-src/emacs/src/gmalloc.c 189 +prev c-src/emacs/src/lisp.h 2191 +printClassification php-src/lce_functions.php /^ function printClassification()$/ +print_help c-src/etags.c /^print_help (argument *argbuffer)$/ +print_language_names c-src/etags.c /^print_language_names (void)$/ +print_version c-src/etags.c /^print_version (void)$/ +printmax_t c-src/emacs/src/lisp.h 148 +printmax_t c-src/emacs/src/lisp.h 153 +proc c-src/h.h 87 +process_file c-src/etags.c /^process_file (FILE *fh, char *fn, language *lang)$/ +process_file_name c-src/etags.c /^process_file_name (char *file, language *lang)$/ +process_pending_signals c-src/emacs/src/keyboard.c /^process_pending_signals (void)$/ +process_special_events c-src/emacs/src/keyboard.c /^process_special_events (void)$/ +process_tool_bar_item c-src/emacs/src/keyboard.c /^process_tool_bar_item (Lisp_Object key, Lisp_Objec/ +prof make-src/Makefile /^prof: ETAGS$/ +prolog_atom c-src/etags.c /^prolog_atom (char *s, size_t pos)$/ +prolog_pr c-src/etags.c /^prolog_pr (char *s, char *last)$/ +prolog_skip_comment c-src/etags.c /^prolog_skip_comment (linebuffer *plb, FILE *inf)$/ +prop c-src/etags.c 209 +protect_malloc_state c-src/emacs/src/gmalloc.c /^protect_malloc_state (int protect_p)$/ +pthread_mutexattr_setprio_ceiling/f ada-src/2ataspri.adb /^ function pthread_mutexattr_setprio_ceiling$/ +pthread_mutexattr_setprotocol/f ada-src/2ataspri.adb /^ function pthread_mutexattr_setprotocol$/ +purpose c-src/emacs/src/lisp.h 1594 +push_kboard c-src/emacs/src/keyboard.c /^push_kboard (struct kboard *k)$/ +pushclass_above c-src/etags.c /^pushclass_above (int bracelev, char *str, int len)/ +put_entries c-src/etags.c /^put_entries (register node *np)$/ +pvec_type c-src/emacs/src/lisp.h 780 +quantizing html-src/algrthms.html /^Quantizing the Received$/ +questo ../c/c.web 34 +quiettest make-src/Makefile /^quiettest:$/ +quit_char c-src/emacs/src/keyboard.c 192 +quit_throw_to_read_char c-src/emacs/src/keyboard.c /^quit_throw_to_read_char (bool from_signal)$/ +qux ruby-src/test1.ru /^ alias_method :qux, :tee, attr_accessor(:bogus)/ +qux1 ruby-src/test1.ru /^ :qux1)$/ +qux= ruby-src/test1.ru /^ def qux=(tee)$/ +r0 c-src/sysdep.h 54 +r1 c-src/sysdep.h 55 +r_alloc c-src/emacs/src/lisp.h /^extern void *r_alloc (void **, size_t) ATTRIBUTE_A/ +range_exp y-src/parse.y 268 +range_exp_list y-src/parse.y 272 +raw_keybuf c-src/emacs/src/keyboard.c 116 +raw_keybuf_count c-src/emacs/src/keyboard.c 117 +rbtp c.c 240 +re_iswctype c-src/emacs/src/regex.h 602 +re_nsub c-src/emacs/src/regex.h 364 +re_pattern_buffer c-src/emacs/src/regex.h 335 +re_pattern_buffer c-src/h.h 119 +re_registers c-src/emacs/src/regex.h 428 +re_wchar_t c-src/emacs/src/regex.h 600 +re_wchar_t c-src/emacs/src/regex.h 623 +re_wctype c-src/emacs/src/regex.h 601 +re_wctype_t c-src/emacs/src/regex.h 599 +re_wctype_t c-src/emacs/src/regex.h 618 +re_wctype_to_bit c-src/emacs/src/regex.h /^# define re_wctype_to_bit(cc) 0$/ +read cp-src/conway.hpp /^ char read() { return alive; }$/ +read php-src/lce_functions.php /^ function read()$/ +read-key-sequence c-src/emacs/src/keyboard.c /^DEFUN ("read-key-sequence", Fread_key_sequence, Sr/ +read-key-sequence-vector c-src/emacs/src/keyboard.c /^DEFUN ("read-key-sequence-vector", Fread_key_seque/ +read1 ruby-src/test1.ru /^ attr_reader :read1 , :read2; attr_writer :writ/ +read2 ruby-src/test1.ru /^ attr_reader :read1 , :read2; attr_writer :writ/ +read_char c-src/emacs/src/keyboard.c /^read_char (int commandflag, Lisp_Object map,$/ +read_char_help_form_unwind c-src/emacs/src/keyboard.c /^read_char_help_form_unwind (void)$/ +read_char_minibuf_menu_prompt c-src/emacs/src/keyboard.c /^read_char_minibuf_menu_prompt (int commandflag,$/ +read_char_x_menu_prompt c-src/emacs/src/keyboard.c /^read_char_x_menu_prompt (Lisp_Object map,$/ +read_decoded_event_from_main_queue c-src/emacs/src/keyboard.c /^read_decoded_event_from_main_queue (struct timespe/ +read_event_from_main_queue c-src/emacs/src/keyboard.c /^read_event_from_main_queue (struct timespec *end_t/ +read_key_sequence c-src/emacs/src/keyboard.c /^read_key_sequence (Lisp_Object *keybuf, int bufsiz/ +read_key_sequence_cmd c-src/emacs/src/keyboard.c 232 +read_key_sequence_remapped c-src/emacs/src/keyboard.c 233 +read_key_sequence_vs c-src/emacs/src/keyboard.c /^read_key_sequence_vs (Lisp_Object prompt, Lisp_Obj/ +read_menu_command c-src/emacs/src/keyboard.c /^read_menu_command (void)$/ ++read_toc perl-src/htlmify-cystic /^sub read_toc ()$/ +readable_events c-src/emacs/src/keyboard.c /^readable_events (int flags)$/ +readline c-src/etags.c /^readline (linebuffer *lbp, FILE *stream)$/ +readline_internal c-src/etags.c /^readline_internal (linebuffer *lbp, register FILE / +realloc c-src/emacs/src/gmalloc.c 65 +realloc c-src/emacs/src/gmalloc.c 69 +realloc c-src/emacs/src/gmalloc.c /^realloc (void *ptr, size_t size)$/ +realloc c-src/emacs/src/gmalloc.c 1716 +reallochook c-src/emacs/src/gmalloc.c /^reallochook (void *ptr, size_t size)$/ +recent-keys c-src/emacs/src/keyboard.c /^DEFUN ("recent-keys", Frecent_keys, Srecent_keys, / +recent_keys c-src/emacs/src/keyboard.c 100 +recent_keys_index c-src/emacs/src/keyboard.c 94 +record_asynch_buffer_change c-src/emacs/src/keyboard.c /^record_asynch_buffer_change (void)$/ +record_auto_save c-src/emacs/src/keyboard.c /^record_auto_save (void)$/ +record_char c-src/emacs/src/keyboard.c /^record_char (Lisp_Object c)$/ +record_menu_key c-src/emacs/src/keyboard.c /^record_menu_key (Lisp_Object c)$/ +record_single_kboard_state c-src/emacs/src/keyboard.c /^record_single_kboard_state ()$/ +record_xmalloc c-src/emacs/src/lisp.h /^extern void *record_xmalloc (size_t) ATTRIBUTE_ALL/ +recover_top_level_message c-src/emacs/src/keyboard.c 138 +recursion-depth c-src/emacs/src/keyboard.c /^DEFUN ("recursion-depth", Frecursion_depth, Srecur/ +recursive-edit c-src/emacs/src/keyboard.c /^DEFUN ("recursive-edit", Frecursive_edit, Srecursi/ +recursive_edit_1 c-src/emacs/src/keyboard.c /^recursive_edit_1 (void)$/ +recursive_edit_unwind c-src/emacs/src/keyboard.c /^recursive_edit_unwind (Lisp_Object buffer)$/ +reduce prol-src/natded.prolog /^reduce((X^M)@N,L):- % beta reduction$/ +reduce_subterm prol-src/natded.prolog /^reduce_subterm(M,M2):-$/ +refreshPort pyt-src/server.py /^ def refreshPort(self):$/ +reg_errcode_t c.c 279 +reg_errcode_t c-src/emacs/src/regex.h 323 +reg_syntax_t c-src/emacs/src/regex.h 43 +regex c-src/etags.c 219 +regex.o make-src/Makefile /^regex.o: emacs\/src\/regex.c$/ +regex_t c-src/emacs/src/regex.h 416 +regex_tag_multiline c-src/etags.c /^regex_tag_multiline (void)$/ +regexfile make-src/Makefile /^regexfile: Makefile$/ +regexp c-src/etags.c 256 +regexp c-src/etags.c 268 +registerAction objcpp-src/SimpleCalc.M /^- registerAction:(SEL)action$/ +register_heapinfo c-src/emacs/src/gmalloc.c /^register_heapinfo (void)$/ +regmatch_t c-src/emacs/src/regex.h 451 +regoff_t c-src/emacs/src/regex.h 423 +regs c-src/etags.c 263 +regs cp-src/screen.cpp 16 +regs_allocated c-src/emacs/src/regex.h 379 +regset c-src/h.h 31 +regular_top_level_message c-src/emacs/src/keyboard.c 143 +rehash_size c-src/emacs/src/lisp.h 1835 +rehash_threshold c-src/emacs/src/lisp.h 1839 +relative_filename c-src/etags.c /^relative_filename (char *file, char *dir)$/ +release distrib make-src/Makefile /^release distrib: web$/ +removeexp prol-src/natded.prolog /^removeexp(E,E,'NIL'):-!.$/ +reorder_modifiers c-src/emacs/src/keyboard.c /^reorder_modifiers (Lisp_Object symbol)$/ +request c.c /^request request (a, b)$/ +requeued_events_pending_p c-src/emacs/src/keyboard.c /^requeued_events_pending_p (void)$/ +required_argument c-src/getopt.h 90 +reset-this-command-lengths c-src/emacs/src/keyboard.c /^DEFUN ("reset-this-command-lengths", Freset_this_c/ +restore_getcjmp c-src/emacs/src/keyboard.c /^restore_getcjmp (sys_jmp_buf temp)$/ +restore_kboard_configuration c-src/emacs/src/keyboard.c /^restore_kboard_configuration (int was_locked)$/ +return_to_command_loop c-src/emacs/src/keyboard.c 135 +reverse prol-src/natded.prolog /^reverse([],Ws,Ws).$/ +revert objc-src/PackInsp.m /^-revert:sender$/ +right c-src/etags.c 216 +right_shift cccp.y /^right_shift (a, b)$/ +right_shift y-src/cccp.y /^right_shift (a, b)$/ +ring1 c.c 241 +ring2 c.c 242 +rm_eo c-src/emacs/src/regex.h 450 +rm_so c-src/emacs/src/regex.h 449 +rng_base cp-src/Range.h 79 +rng_inc cp-src/Range.h 81 +rng_limit cp-src/Range.h 80 +rng_nelem cp-src/Range.h 83 +rosso cp-src/c.C 40 +rsyncfromfly make-src/Makefile /^rsyncfromfly:$/ +rsynctofly make-src/Makefile /^rsynctofly:$/ +rtint c-src/h.h 60 +rtint c-src/h.h 68 +rtstr c-src/h.h 61 +rtstr c-src/h.h 69 +rtunion_def c-src/h.h 58 +rtunion_def c-src/h.h 64 +rtx c-src/h.h 62 +rtxnp c-src/h.h 71 +rtxp c-src/h.h 70 +s c-src/emacs/src/lisp.h 4672 +s c-src/emacs/src/lisp.h 4678 +s1 cp-src/c.C 32 +s2 cp-src/c.C 35 +safe_run_hook_funcall c-src/emacs/src/keyboard.c /^safe_run_hook_funcall (ptrdiff_t nargs, Lisp_Objec/ +safe_run_hooks c-src/emacs/src/keyboard.c /^safe_run_hooks (Lisp_Object hook)$/ +safe_run_hooks_1 c-src/emacs/src/keyboard.c /^safe_run_hooks_1 (ptrdiff_t nargs, Lisp_Object *ar/ +safe_run_hooks_error c-src/emacs/src/keyboard.c /^safe_run_hooks_error (Lisp_Object error, ptrdiff_t/ +save pyt-src/server.py /^ def save(self):$/ +save pyt-src/server.py /^ def save(self):$/ +save pyt-src/server.py /^ def save(self):$/ +save_getcjmp c-src/emacs/src/keyboard.c /^save_getcjmp (sys_jmp_buf temp)$/ +save_type c-src/emacs/src/lisp.h /^save_type (struct Lisp_Save_Value *v, int n)$/ +savenstr c-src/etags.c /^savenstr (const char *cp, int len)$/ +savestr c-src/etags.c /^savestr (const char *cp)$/ +say go-src/test.go /^func say(msg string) {$/ +scan_separators c-src/etags.c /^scan_separators (char *name)$/ +scolonseen c-src/etags.c 2447 +scratch c-src/sysdep.h 56 +scroll_bar_parts c-src/emacs/src/keyboard.c 5189 +sec=\relax tex-src/texinfo.tex /^\\let\\appendixsec=\\relax$/ +section perl-src/htlmify-cystic 25 +section=\relax tex-src/texinfo.tex /^\\let\\appendixsection=\\relax$/ ++section_href perl-src/htlmify-cystic /^sub section_href ($)$/ +section_name perl-src/htlmify-cystic 12 ++section_name perl-src/htlmify-cystic /^sub section_name ($)$/ +section_toc perl-src/htlmify-cystic 15 ++section_url perl-src/htlmify-cystic /^sub section_url ()$/ ++section_url_base perl-src/htlmify-cystic /^sub section_url_base ()$/ ++section_url_name perl-src/htlmify-cystic /^sub section_url_name ()$/ +select prol-src/natded.prolog /^select(X,[X|Xs],Xs).$/ +select-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun select-tags-table ()$/ +select-tags-table-mode el-src/emacs/lisp/progmodes/etags.el /^(define-derived-mode select-tags-table-mode specia/ +select-tags-table-mode-map el-src/emacs/lisp/progmodes/etags.el /^(defvar select-tags-table-mode-map ; Doc string?$/ +select-tags-table-quit el-src/emacs/lisp/progmodes/etags.el /^(defun select-tags-table-quit ()$/ +select-tags-table-select el-src/emacs/lisp/progmodes/etags.el /^(defun select-tags-table-select (button)$/ +select_last prol-src/natded.prolog /^select_last([X],X,[]).$/ +send objc-src/Subprocess.m /^- send:(const char *)string withNewline:(BOOL)want/ +send objc-src/Subprocess.m /^- send:(const char *)string$/ +separator_names c-src/emacs/src/keyboard.c 7372 +serializeToVars php-src/lce_functions.php /^ function serializeToVars($prefix)$/ +serializeToVars php-src/lce_functions.php /^ function serializeToVars($prefix)$/ +set cp-src/conway.hpp /^ void set(void) { alive = 1; }$/ +set-input-interrupt-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-interrupt-mode", Fset_input_inte/ +set-input-meta-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-meta-mode", Fset_input_meta_mode/ +set-input-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-mode", Fset_input_mode, Sset_inp/ +set-output-flow-control c-src/emacs/src/keyboard.c /^DEFUN ("set-output-flow-control", Fset_output_flow/ +set-quit-char c-src/emacs/src/keyboard.c /^DEFUN ("set-quit-char", Fset_quit_char, Sset_quit_/ +setDate cp-src/functions.cpp /^void Date::setDate ( int d , int m , int y ){$/ +setDelegate objc-src/Subprocess.m /^- setDelegate:anObject$/ +setRevertButtonTitle objc-src/PackInsp.m /^-setRevertButtonTitle$/ +set_base cp-src/Range.h /^ void set_base (double b) { rng_base = b; }$/ +set_char_table_contents c-src/emacs/src/lisp.h /^set_char_table_contents (Lisp_Object table, ptrdif/ +set_char_table_defalt c-src/emacs/src/lisp.h /^set_char_table_defalt (Lisp_Object table, Lisp_Obj/ +set_char_table_extras c-src/emacs/src/lisp.h /^set_char_table_extras (Lisp_Object table, ptrdiff_/ +set_char_table_purpose c-src/emacs/src/lisp.h /^set_char_table_purpose (Lisp_Object table, Lisp_Ob/ +set_hash_key_slot c-src/emacs/src/lisp.h /^set_hash_key_slot (struct Lisp_Hash_Table *h, ptrd/ +set_hash_value_slot c-src/emacs/src/lisp.h /^set_hash_value_slot (struct Lisp_Hash_Table *h, pt/ +set_inc cp-src/Range.h /^ void set_inc (double i) { rng_inc = i; }$/ +set_limit cp-src/Range.h /^ void set_limit (double l) { rng_limit = l; }$/ +set_overlay_plist c-src/emacs/src/lisp.h /^set_overlay_plist (Lisp_Object overlay, Lisp_Objec/ +set_poll_suppress_count c-src/emacs/src/keyboard.c /^set_poll_suppress_count (int count)$/ +set_prop c-src/emacs/src/keyboard.c /^set_prop (ptrdiff_t idx, Lisp_Object val)$/ +set_save_integer c-src/emacs/src/lisp.h /^set_save_integer (Lisp_Object obj, int n, ptrdiff_/ +set_save_pointer c-src/emacs/src/lisp.h /^set_save_pointer (Lisp_Object obj, int n, void *va/ +set_string_intervals c-src/emacs/src/lisp.h /^set_string_intervals (Lisp_Object s, INTERVAL i)$/ +set_sub_char_table_contents c-src/emacs/src/lisp.h /^set_sub_char_table_contents (Lisp_Object table, pt/ +set_symbol_function c-src/emacs/src/lisp.h /^set_symbol_function (Lisp_Object sym, Lisp_Object / +set_symbol_next c-src/emacs/src/lisp.h /^set_symbol_next (Lisp_Object sym, struct Lisp_Symb/ +set_symbol_plist c-src/emacs/src/lisp.h /^set_symbol_plist (Lisp_Object sym, Lisp_Object pli/ +set_waiting_for_input c-src/emacs/src/keyboard.c /^set_waiting_for_input (struct timespec *time_to_cl/ +setref tex-src/texinfo.tex /^\\expandafter\\expandafter\\expandafter\\appendixsetre/ +setup cp-src/c.C 5 +shift cp-src/functions.cpp /^void Date::shift ( void ){\/\/Shift this date to pre/ +shouldLoad objc-src/PackInsp.m /^-(BOOL)shouldLoad$/ +should_see_this_array_type cp-src/c.C 156 +should_see_this_function_pointer cp-src/c.C 153 +should_see_this_one_enclosed_in_extern_C cp-src/c.C 149 +show erl-src/gs_dialog.erl /^show(Module, Title, Message, Args) ->$/ +showError objc-src/Subprocess.m /^showError (const char *errorString, id theDelegate/ +showInfo objc-src/PackInsp.m /^-showInfo:sender$/ +show_help_echo c-src/emacs/src/keyboard.c /^show_help_echo (Lisp_Object help, Lisp_Object wind/ +sig c-src/emacs/src/keyboard.c 7238 +signal_handler c-src/h.h 82 +signal_handler1 c-src/h.h 83 +signal_handler_t c-src/h.h 94 +simulation html-src/software.html /^Software that I wrote for supporting my research a/ +single_kboard c-src/emacs/src/keyboard.c 89 +single_kboard_state c-src/emacs/src/keyboard.c /^single_kboard_state ()$/ +site cp-src/conway.hpp 5 +site cp-src/conway.hpp /^ site(int xi, int yi): x(xi), y(yi), alive(0) {/ +size c-src/etags.c 236 +size c-src/etags.c 2522 +size c-src/emacs/src/gmalloc.c 156 +size c-src/emacs/src/gmalloc.c 163 +size c-src/emacs/src/gmalloc.c 1862 +size c-src/emacs/src/lisp.h 1364 +size c-src/emacs/src/lisp.h 1390 +skeyseen c-src/etags.c 2445 +skip_name c-src/etags.c /^skip_name (char *cp)$/ +skip_non_spaces c-src/etags.c /^skip_non_spaces (char *cp)$/ +skip_spaces c-src/etags.c /^skip_spaces (char *cp)$/ +snarf-tag-function el-src/emacs/lisp/progmodes/etags.el /^(defvar snarf-tag-function nil$/ +snone c-src/etags.c 2443 +some_mouse_moved c-src/emacs/src/keyboard.c /^some_mouse_moved (void)$/ +space tex-src/texinfo.tex /^ {#2\\labelspace #1}\\dotfill\\doshortpageno{#3}}%/ +space tex-src/texinfo.tex /^ \\dosubsubsecentry{#2.#3.#4.#5\\labelspace#1}{#6}}/ +specbind_tag c-src/emacs/src/lisp.h 2943 +specbinding c-src/emacs/src/lisp.h 2955 +specialsymbol prol-src/natded.prolog /^specialsymbol(C1,C2,S):-$/ +splitexp prol-src/natded.prolog /^splitexp(E,E,('NIL','NIL')):-!.$/ +srclist make-src/Makefile /^srclist: Makefile$/ +ss3 c.c 255 +sss1 c.c 252 +sss2 c.c 253 +sstab prol-src/natded.prolog /^sstab(2,'C',',').$/ +st_C_attribute c-src/etags.c 2209 +st_C_class c-src/etags.c 2212 +st_C_define c-src/etags.c 2213 +st_C_enum c-src/etags.c 2213 +st_C_extern c-src/etags.c 2213 +st_C_gnumacro c-src/etags.c 2208 +st_C_ignore c-src/etags.c 2209 +st_C_javastruct c-src/etags.c 2210 +st_C_objend c-src/etags.c 2207 +st_C_objimpl c-src/etags.c 2207 +st_C_objprot c-src/etags.c 2207 +st_C_operator c-src/etags.c 2211 +st_C_struct c-src/etags.c 2213 +st_C_template c-src/etags.c 2212 +st_C_typedef c-src/etags.c 2213 +st_none c-src/etags.c 2206 +stack c.c 155 +stagseen c-src/etags.c 2446 +standalone make-src/Makefile /^standalone:$/ +start c-src/emacs/src/regex.h 431 +start c-src/emacs/src/keyboard.c 8753 +start php-src/lce_functions.php /^ function start($line, $class)$/ +start y-src/cccp.y 143 +start_polling c-src/emacs/src/keyboard.c /^start_polling (void)$/ +start_up prol-src/natded.prolog /^start_up:-$/ +state_protected_p c-src/emacs/src/gmalloc.c 400 +statetable html-src/algrthms.html /^Next$/ +staticetags make-src/Makefile /^staticetags:$/ +step cp-src/conway.hpp /^ void step(void) { alive = next_alive; }$/ +step cp-src/clheir.hpp /^ virtual void step(void) { }$/ +step_everybody cp-src/clheir.cpp /^void step_everybody(void)$/ +stop_polling c-src/emacs/src/keyboard.c /^stop_polling (void)$/ +store_user_signal_events c-src/emacs/src/keyboard.c /^store_user_signal_events (void)$/ +str go-src/test1.go 9 +strcaseeq c-src/etags.c /^#define strcaseeq(s,t) (assert ((s)!=NULL && (t)!=/ +streq c-src/etags.c /^#define streq(s,t) (assert ((s)!=NULL || (t)!=NULL/ +string_intervals c-src/emacs/src/lisp.h /^string_intervals (Lisp_Object s)$/ +stripLine php-src/lce_functions.php /^ function stripLine($line, $class)$/ +stripname pas-src/common.pas /^function stripname; (* ($/ +strncaseeq c-src/etags.c /^#define strncaseeq(s,t,n) (assert ((s)!=NULL && (t/ +strneq c-src/etags.c /^#define strneq(s,t,n) (assert ((s)!=NULL || (t)!=N/ +structdef c-src/etags.c 2448 +stuff_buffered_input c-src/emacs/src/keyboard.c /^stuff_buffered_input (Lisp_Object stuffstring)$/ +subprocess objc-src/PackInsp.m /^-subprocess:(Subprocess *)sender output:(char *)bu/ +subprocessDone objc-src/PackInsp.m /^-subprocessDone:(Subprocess *)sender$/ +subsec=\relax tex-src/texinfo.tex /^\\let\\appendixsubsec=\\relax$/ +subsection perl-src/htlmify-cystic 26 +subsection=\relax tex-src/texinfo.tex /^\\let\\appendixsubsection=\\relax$/ +subsection_marker perl-src/htlmify-cystic 161 +subst prol-src/natded.prolog /^subst(var(Y),var(X),M,N):-$/ +substitute c-src/etags.c /^substitute (char *in, char *out, struct re_registe/ +subsubsec=\relax tex-src/texinfo.tex /^\\let\\appendixsubsubsec=\\relax$/ +subsubsection perl-src/htlmify-cystic 27 +subsubsection=\relax tex-src/texinfo.tex /^\\let\\appendixsubsubsection=\\relax$/ +subtle ruby-src/test1.ru /^ :tee ; attr_reader :subtle$/ +subtree prol-src/natded.prolog /^subtree(T,T).$/ +suffix c-src/etags.c 186 +suffixes c-src/etags.c 195 +suggest_asking_for_help c-src/etags.c /^suggest_asking_for_help (void)$/ +suspend-emacs c-src/emacs/src/keyboard.c /^DEFUN ("suspend-emacs", Fsuspend_emacs, Ssuspend_e/ +sval cccp.y 117 +sval y-src/cccp.y 116 +swallow_events c-src/emacs/src/keyboard.c /^swallow_events (bool do_display)$/ +switch_line_buffers c-src/etags.c /^#define switch_line_buffers() (curndx = 1 - curndx/ +sxhash_combine c-src/emacs/src/lisp.h /^sxhash_combine (EMACS_UINT x, EMACS_UINT y)$/ +sym_type c-src/etags.c 2204 +symbol_interned c-src/emacs/src/lisp.h 639 +symbol_name c-src/emacs/src/lisp.h 1687 +symbol_redirect c-src/emacs/src/lisp.h 646 +syms_of_abbrev c-src/abbrev.c /^syms_of_abbrev ()$/ +syms_of_keyboard c-src/emacs/src/keyboard.c /^syms_of_keyboard (void)$/ +synchronize_system_messages_locale c-src/emacs/src/lisp.h /^INLINE void synchronize_system_messages_locale (vo/ +synchronize_system_time_locale c-src/emacs/src/lisp.h /^INLINE void synchronize_system_time_locale (void) / +syntax c-src/emacs/src/regex.h 350 +sys_jmp_buf c-src/emacs/src/lisp.h 2906 +sys_jmp_buf c-src/emacs/src/lisp.h 2910 +sys_jmp_buf c-src/emacs/src/lisp.h 2916 +sys_longjmp c-src/emacs/src/lisp.h /^# define sys_longjmp(j, v) _longjmp (j, v)$/ +sys_longjmp c-src/emacs/src/lisp.h /^# define sys_longjmp(j, v) siglongjmp (j, v)$/ +sys_longjmp c-src/emacs/src/lisp.h /^# define sys_longjmp(j, v) longjmp (j, v)$/ +sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) _setjmp (j)$/ +sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) sigsetjmp (j, 0)$/ +sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) setjmp (j)$/ +syscall_error c-src/sysdep.h 34 +t cp-src/c.C 52 +t1 cp-src/c.C 34 +t2 cp-src/c.C 38 +tab_count_words c-src/tab.c /^int tab_count_words(char **tab)$/ +tab_delete_first c-src/tab.c /^int tab_delete_first(char **tab)$/ +tab_fill c-src/tab.c /^char **tab_fill(char *str, char delim)$/ +tab_free c-src/tab.c /^void tab_free(char **tab)$/ +tag-any-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-any-match-p (_tag)$/ +tag-exact-file-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-exact-file-name-match-p (tag)$/ +tag-exact-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-exact-match-p (tag)$/ +tag-file-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-file-name-match-p (tag)$/ +tag-find-file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun tag-find-file-of-tag (file) ; Doc string?$/ +tag-find-file-of-tag-noselect el-src/emacs/lisp/progmodes/etags.el /^(defun tag-find-file-of-tag-noselect (file)$/ +tag-implicit-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-implicit-name-match-p (tag)$/ +tag-lines-already-matched el-src/emacs/lisp/progmodes/etags.el /^(defvar tag-lines-already-matched nil$/ +tag-partial-file-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-partial-file-name-match-p (_tag)$/ +tag-re-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-re-match-p (re)$/ +tag-symbol-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-symbol-match-p (tag)$/ +tag-word-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-word-match-p (tag)$/ +tag1 c-src/torture.c /^(*tag1 (sig, handler)) ()$/ +tag1 c-src/dostorture.c /^(*tag1 (sig, handler)) ()$/ +tag1 c-src/h.h 110 +tag2 c-src/torture.c /^(*tag2 (sig, handler)) ()$/ +tag2 c-src/dostorture.c /^(*tag2 (sig, handler)) ()$/ +tag3 c-src/torture.c /^(*tag3 (int sig, void (*handler) (int))) (int)$/ +tag3 c-src/dostorture.c /^(*tag3 (int sig, void (*handler) (int))) (int)$/ +tag4 c-src/torture.c /^(*tag4 (int sig, void (*handler) (int))) (int)$/ +tag4 c-src/dostorture.c /^(*tag4 (int sig, void (*handler) (int))) (int)$/ +tag5 c-src/torture.c /^tag5 (handler, arg)$/ +tag5 c-src/dostorture.c /^tag5 (handler, arg)$/ +tag6 c-src/torture.c /^tag6 (void (*handler) (void *), void *arg)$/ +tag6 c-src/dostorture.c /^tag6 (void (*handler) (void *), void *arg)$/ +tag_or_ch c-src/emacs/src/lisp.h 3026 +taggedfname c-src/etags.c 207 +tags make-src/Makefile /^tags: TAGS$/ +tags-add-tables el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-add-tables 'ask-user$/ +tags-apropos el-src/emacs/lisp/progmodes/etags.el /^(defun tags-apropos (regexp)$/ +tags-apropos-additional-actions el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-apropos-additional-actions nil$/ +tags-apropos-function el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-apropos-function nil$/ +tags-apropos-verbose el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-apropos-verbose nil$/ +tags-case-fold-search el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-case-fold-search 'default$/ +tags-complete-tags-table-file el-src/emacs/lisp/progmodes/etags.el /^(defun tags-complete-tags-table-file (string predi/ +tags-completion-at-point-function el-src/emacs/lisp/progmodes/etags.el /^(defun tags-completion-at-point-function ()$/ +tags-completion-table el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-completion-table nil$/ +tags-completion-table el-src/emacs/lisp/progmodes/etags.el /^(defun tags-completion-table ()$/ +tags-completion-table-function el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-completion-table-function nil$/ +tags-compression-info-list el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-compression-info-list$/ +tags-expand-table-name el-src/emacs/lisp/progmodes/etags.el /^(defun tags-expand-table-name (file)$/ +tags-file-name el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-file-name nil$/ +tags-included-tables el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-included-tables nil$/ +tags-included-tables el-src/emacs/lisp/progmodes/etags.el /^(defun tags-included-tables ()$/ +tags-included-tables-function el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-included-tables-function nil$/ +tags-lazy-completion-table el-src/emacs/lisp/progmodes/etags.el /^(defun tags-lazy-completion-table ()$/ +tags-location-ring el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-location-ring (make-ring xref-marker-/ +tags-loop-continue el-src/emacs/lisp/progmodes/etags.el /^(defun tags-loop-continue (&optional first-time)$/ +tags-loop-eval el-src/emacs/lisp/progmodes/etags.el /^(defun tags-loop-eval (form)$/ +tags-loop-operate el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-loop-operate nil$/ +tags-loop-revert-buffers el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-loop-revert-buffers nil$/ +tags-loop-scan el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-loop-scan$/ +tags-next-table el-src/emacs/lisp/progmodes/etags.el /^(defun tags-next-table ()$/ +tags-query-replace el-src/emacs/lisp/progmodes/etags.el /^(defun tags-query-replace (from to &optional delim/ +tags-recognize-empty-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun tags-recognize-empty-tags-table ()$/ +tags-reset-tags-tables el-src/emacs/lisp/progmodes/etags.el /^(defun tags-reset-tags-tables ()$/ +tags-revert-without-query el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-revert-without-query nil$/ +tags-search el-src/emacs/lisp/progmodes/etags.el /^(defun tags-search (regexp &optional file-list-for/ +tags-select-tags-table el-src/emacs/lisp/progmodes/etags.el /^(define-button-type 'tags-select-tags-table$/ +tags-table-check-computed-list el-src/emacs/lisp/progmodes/etags.el /^(defun tags-table-check-computed-list ()$/ +tags-table-computed-list el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-computed-list nil$/ +tags-table-computed-list-for el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-computed-list-for nil$/ +tags-table-extend-computed-list el-src/emacs/lisp/progmodes/etags.el /^(defun tags-table-extend-computed-list ()$/ +tags-table-files el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-files nil$/ +tags-table-files el-src/emacs/lisp/progmodes/etags.el /^(defun tags-table-files ()$/ +tags-table-files-function el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-files-function nil$/ +tags-table-format-functions el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-format-functions '(etags-recogn/ +tags-table-including el-src/emacs/lisp/progmodes/etags.el /^(defun tags-table-including (this-file core-only)$/ +tags-table-list el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-table-list nil$/ +tags-table-list-member el-src/emacs/lisp/progmodes/etags.el /^(defun tags-table-list-member (file list)$/ +tags-table-list-pointer el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-list-pointer nil$/ +tags-table-list-started-at el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-list-started-at nil$/ +tags-table-mode el-src/emacs/lisp/progmodes/etags.el /^(defun tags-table-mode ()$/ +tags-table-set-list el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-set-list nil$/ +tags-tag-face el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-tag-face 'default$/ +tags-verify-table el-src/emacs/lisp/progmodes/etags.el /^(defun tags-verify-table (file)$/ +tags-with-face el-src/emacs/lisp/progmodes/etags.el /^(defmacro tags-with-face (face &rest body)$/ +target_multibyte c-src/emacs/src/regex.h 407 +tcpdump html-src/software.html /^tcpdump$/ +teats cp-src/c.C 127 +tee ruby-src/test1.ru /^ attr_accessor :tee$/ +tee= ruby-src/test1.ru /^ attr_accessor :tee$/ +temporarily_switch_to_single_kboard c-src/emacs/src/keyboard.c /^temporarily_switch_to_single_kboard (struct frame / +tend c-src/etags.c 2432 +terminate objc-src/Subprocess.m /^- terminate:sender$/ +terminateInput objc-src/Subprocess.m /^- terminateInput$/ +test c-src/emacs/src/lisp.h 1871 +test cp-src/c.C 86 +test erl-src/gs_dialog.erl /^test() ->$/ +test go-src/test1.go /^func test(p plus) {$/ +test make-src/Makefile /^test:$/ +test php-src/ptest.php /^test $/ +test.me22b lua-src/test.lua /^ local function test.me22b (one)$/ +test.me_22a lua-src/test.lua /^ function test.me_22a(one, two)$/ +test_undefined c-src/emacs/src/keyboard.c /^test_undefined (Lisp_Object binding)$/ +texttreelist prol-src/natded.prolog /^texttreelist([]).$/ +this c-src/a/b/b.c 1 +this-command-keys c-src/emacs/src/keyboard.c /^DEFUN ("this-command-keys", Fthis_command_keys, St/ +this-command-keys-vector c-src/emacs/src/keyboard.c /^DEFUN ("this-command-keys-vector", Fthis_command_k/ +this-single-command-keys c-src/emacs/src/keyboard.c /^DEFUN ("this-single-command-keys", Fthis_single_co/ +this-single-command-raw-keys c-src/emacs/src/keyboard.c /^DEFUN ("this-single-command-raw-keys", Fthis_singl/ +this_command_key_count c-src/emacs/src/keyboard.c 108 +this_command_key_count_reset c-src/emacs/src/keyboard.c 112 +this_command_keys c-src/emacs/src/keyboard.c 107 +this_file_toc perl-src/htlmify-cystic 29 +this_single_command_key_start c-src/emacs/src/keyboard.c 125 +tignore c-src/etags.c 2433 +timer_check c-src/emacs/src/keyboard.c /^timer_check (void)$/ +timer_check_2 c-src/emacs/src/keyboard.c /^timer_check_2 (Lisp_Object timers, Lisp_Object idl/ +timer_idleness_start_time c-src/emacs/src/keyboard.c 335 +timer_last_idleness_start_time c-src/emacs/src/keyboard.c 340 +timer_resume_idle c-src/emacs/src/keyboard.c /^timer_resume_idle (void)$/ +timer_start_idle c-src/emacs/src/keyboard.c /^timer_start_idle (void)$/ +timer_stop_idle c-src/emacs/src/keyboard.c /^timer_stop_idle (void)$/ +timers_run c-src/emacs/src/keyboard.c 320 +tinbody c-src/etags.c 2431 +tkeyseen c-src/etags.c 2429 +tnone c-src/etags.c 2428 ++toc_line perl-src/htlmify-cystic /^sub toc_line ($)$/ +toggleDescription objc-src/PackInsp.m /^-toggleDescription$/ +tok c-src/etags.c 2491 +token c-src/etags.c 2508 +token cccp.y 437 +token cccp.y 439 +token y-src/cccp.y 437 +token y-src/cccp.y 439 +tokenize prol-src/natded.prolog /^tokenize([C1,C2,C3|Cs],Xs-Ys,TsResult):- % spe/ +tokenizeatom prol-src/natded.prolog /^tokenizeatom(Atom,Ws):-$/ +tokentab2 cccp.y 442 +tokentab2 y-src/cccp.y 442 +tool_bar_item_properties c-src/emacs/src/keyboard.c 7970 +tool_bar_items c-src/emacs/src/keyboard.c /^tool_bar_items (Lisp_Object reuse, int *nitems)$/ +tool_bar_items_vector c-src/emacs/src/keyboard.c 7965 +toolkit_menubar_in_use c-src/emacs/src/keyboard.c /^toolkit_menubar_in_use (struct frame *f)$/ +top-level c-src/emacs/src/keyboard.c /^DEFUN ("top-level", Ftop_level, Stop_level, 0, 0, / +top_level_1 c-src/emacs/src/keyboard.c /^top_level_1 (Lisp_Object ignore)$/ +top_level_2 c-src/emacs/src/keyboard.c /^top_level_2 (void)$/ +total_keys c-src/emacs/src/keyboard.c 97 +total_size_of_entries c-src/etags.c /^total_size_of_entries (register node *np)$/ +total_surrounding cp-src/conway.cpp /^int site::total_surrounding(void)$/ +totally_unblock_input c-src/emacs/src/keyboard.c /^totally_unblock_input (void)$/ +tpcmd c-src/h.h 8 +tpcmd c-src/h.h 15 +track-mouse c-src/emacs/src/keyboard.c /^DEFUN ("internal--track-mouse", Ftrack_mouse, Stra/ +tracking_off c-src/emacs/src/keyboard.c /^tracking_off (Lisp_Object old_value)$/ +traffic_light cp-src/conway.cpp /^void traffic_light(int x, int y)$/ +translate c-src/emacs/src/regex.h 361 +treats cp-src/c.C 131 +tt prol-src/natded.prolog /^tt:-$/ +tt=cmtt10 tex-src/texinfo.tex /^\\font\\deftt=cmtt10 scaled \\magstep1$/ +tty_read_avail_input c-src/emacs/src/keyboard.c /^tty_read_avail_input (struct terminal *terminal,$/ +ttypeseen c-src/etags.c 2430 +typdef c-src/etags.c 2434 +type c-src/etags.c 2271 +type c-src/emacs/src/gmalloc.c 145 +type c-src/emacs/src/lisp.h 2276 +type c-src/emacs/src/lisp.h 2286 +type c-src/emacs/src/lisp.h 2296 +type c-src/emacs/src/lisp.h 2304 +type c-src/emacs/src/lisp.h 2364 +type c-src/emacs/src/lisp.h 3025 +typefunargs tex-src/texinfo.tex /^\\deftypefunargs {#3}\\endgroup %$/ +typefunargs tex-src/texinfo.tex /^\\deftypefunargs {#4}\\endgroup %$/ +typemargin tex-src/texinfo.tex /^\\newskip\\deftypemargin \\deftypemargin=12pt$/ +typemargin tex-src/texinfo.tex /^\\rlap{\\rightline{{\\rm #2}\\hskip \\deftypemargin}}}%/ +u c-src/emacs/src/lisp.h 2397 +u_any c-src/emacs/src/lisp.h 2214 +u_boolfwd c-src/emacs/src/lisp.h 2371 +u_buffer_objfwd c-src/emacs/src/lisp.h 2373 +u_finalizer c-src/emacs/src/lisp.h 2219 +u_free c-src/emacs/src/lisp.h 2215 +u_intfwd c-src/emacs/src/lisp.h 2370 +u_kboard_objfwd c-src/emacs/src/lisp.h 2374 +u_marker c-src/emacs/src/lisp.h 2216 +u_objfwd c-src/emacs/src/lisp.h 2372 +u_overlay c-src/emacs/src/lisp.h 2217 +u_save_value c-src/emacs/src/lisp.h 2218 +unargs tex-src/texinfo.tex /^\\defunargs {#2}\\endgroup %$/ +unargs tex-src/texinfo.tex /^\\defunargs {#2}\\endgroup %$/ +unargs tex-src/texinfo.tex /^\\defunargs {#2}\\endgroup %$/ +unargs tex-src/texinfo.tex /^\\defunargs {#3}\\endgroup %$/ +unargs tex-src/texinfo.tex /^\\defunargs {#3}\\endgroup %$/ +unblock_input c-src/emacs/src/keyboard.c /^unblock_input (void)$/ +unblock_input_to c-src/emacs/src/keyboard.c /^unblock_input_to (int level)$/ +unchar c-src/h.h 99 +unexpand-abbrev c-src/abbrev.c /^DEFUN ("unexpand-abbrev", Funexpand_abbrev, Sunexp/ +unread_switch_frame c-src/emacs/src/keyboard.c 204 +unsignedp cccp.y 113 +unsignedp y-src/cccp.y 112 +uprintmax_t c-src/emacs/src/lisp.h 149 +uprintmax_t c-src/emacs/src/lisp.h 154 ++usage perl-src/yagrip.pl /^sub usage {$/ +usecharno c-src/etags.c 210 +used c-src/emacs/src/regex.h 347 +used_syntax c-src/emacs/src/regex.h 398 +user_cmp_function c-src/emacs/src/lisp.h 1814 +user_error c-src/emacs/src/keyboard.c /^user_error (const char *msg)$/ +user_hash_function c-src/emacs/src/lisp.h 1811 +user_signal_info c-src/emacs/src/keyboard.c 7235 +user_signals c-src/emacs/src/keyboard.c 7250 +usfreelock_ptr/t ada-src/etags-test-for.ada /^ type usfreelock_ptr is access$/ +val c-src/getopt.h 84 +val c-src/emacs/src/lisp.h 691 +val c-src/emacs/src/lisp.h 3027 +val prol-src/natded.prolog /^val(X) --> ['['], valseq(X), [']'].$/ +valcell c-src/emacs/src/lisp.h 2357 +valid c-src/etags.c 220 +valid c-src/etags.c 2502 +validate php-src/lce_functions.php /^ function validate($value)$/ +validate php-src/lce_functions.php /^ function validate($value)$/ +valloc c-src/emacs/src/gmalloc.c /^valloc (size_t size)$/ +valseq prol-src/natded.prolog /^valseq([Val|Vals]) --> val(Val), plusvalseq(Vals)./ +value c-src/emacs/src/lisp.h 687 +value cccp.y 113 +value y-src/cccp.y 112 +var c-src/emacs/src/keyboard.c 11023 +var c-src/emacs/src/lisp.h 3137 +varargs tex-src/texinfo.tex /^\\defvarargs {#3}\\endgroup %$/ +varargs tex-src/texinfo.tex /^\\defvarargs {#3}\\endgroup %$/ +varargs tex-src/texinfo.tex /^\\defvarargs {#2}\\endgroup %$/ +varargs tex-src/texinfo.tex /^\\defvarargs {#2}\\endgroup %$/ +vcopy c-src/emacs/src/lisp.h /^vcopy (Lisp_Object v, ptrdiff_t offset, Lisp_Objec/ +vectorlike_header c-src/emacs/src/lisp.h 1343 +verde cp-src/c.C 40 +verify-tags-table-function el-src/emacs/lisp/progmodes/etags.el /^(defvar verify-tags-table-function nil$/ +verify_ascii c-src/emacs/src/lisp.h /^# define verify_ascii(str) (str)$/ +vignore c-src/etags.c 2417 +visit-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun visit-tags-table (file &optional local)$/ +visit-tags-table-buffer el-src/emacs/lisp/progmodes/etags.el /^(defun visit-tags-table-buffer (&optional cont)$/ +void c-src/emacs/src/lisp.h /^INLINE void (check_cons_list) (void) { lisp_h_chec/ +voidfuncptr c-src/emacs/src/lisp.h 2108 +voidval cccp.y 116 +voidval y-src/cccp.y 115 +wait_status_ptr_t c.c 161 +waiting_for_input c-src/emacs/src/keyboard.c 150 +warning cccp.y /^warning (msg)$/ +warning y-src/cccp.y /^warning (msg)$/ +weak c-src/emacs/src/lisp.h 1830 +weak_alias c-src/emacs/src/gmalloc.c /^weak_alias (free, cfree)$/ +web ftp publish make-src/Makefile /^web ftp publish:$/ +what c-src/etags.c 252 +wheel_syms c-src/emacs/src/keyboard.c 4628 +where c-src/emacs/src/lisp.h 2348 +where cp-src/clheir.hpp 77 +where_in_registry cp-src/clheir.hpp 15 +windowWillClose objcpp-src/SimpleCalc.M /^- windowWillClose:sender$/ +wipe_kboard c-src/emacs/src/keyboard.c /^wipe_kboard (KBOARD *kb)$/ +womboid c-src/h.h 63 +womboid c-src/h.h 75 +word_size c-src/emacs/src/lisp.h 1473 +write php-src/lce_functions.php /^ function write()$/ +write php-src/lce_functions.php /^ function write($save="yes")$/ +write1= ruby-src/test1.ru /^ attr_reader :read1 , :read2; attr_writer :writ/ +write2= ruby-src/test1.ru /^ attr_reader :read1 , :read2; attr_writer :writ/ +write_abbrev c-src/abbrev.c /^write_abbrev (sym, stream)$/ +write_classname c-src/etags.c /^write_classname (linebuffer *cn, const char *quali/ +write_lex prol-src/natded.prolog /^write_lex(File):-$/ +write_lex_cat prol-src/natded.prolog /^write_lex_cat(File):-$/ +write_xyc cp-src/screen.cpp /^void write_xyc(int x, int y, char c)$/ +writebreak prol-src/natded.prolog /^writebreak([]).$/ +writebreaklex prol-src/natded.prolog /^writebreaklex([]).$/ +writecat prol-src/natded.prolog /^writecat(np(ind(sng),nm(_)),np,[],[]):-!.$/ +writelist prol-src/natded.prolog /^writelist([der(Ws)|Ws2]):-$/ +writelistsubs prol-src/natded.prolog /^writelistsubs([],X):-$/ +writenamestring pas-src/common.pas /^procedure writenamestring;(*($/ +writesubs prol-src/natded.prolog /^writesubs([]).$/ +writesups prol-src/natded.prolog /^writesups([]).$/ +written c-src/etags.c 211 +x c.c 153 +x c.c 179 +x c.c 188 +x c.c 189 +x cp-src/c.C 53 +x cp-src/c.C 80 +x cp-src/conway.hpp 7 +x cp-src/clheir.hpp 49 +x cp-src/clheir.hpp 58 +x cp-src/fail.C 10 +x cp-src/fail.C 44 +x tex-src/texinfo.tex /^\\refx{#1-snt}{} [\\printednodename], page\\tie\\refx{/ +x-get-selection-internal c.c /^DEFUN ("x-get-selection-internal", Fx_get_selectio/ +x-get-selection-internal c.c /^ Fx_get_selection_internal, Sx_get_selection/ +xcar_addr c-src/emacs/src/lisp.h /^xcar_addr (Lisp_Object c)$/ +xcdr_addr c-src/emacs/src/lisp.h /^xcdr_addr (Lisp_Object c)$/ +xdiff make-src/Makefile /^xdiff: ETAGS EXTAGS ${infiles}$/ +xmalloc c-src/etags.c /^xmalloc (size_t size)$/ +xnew c-src/etags.c /^#define xnew(n, Type) ((Type *) xmalloc ((n) / +xrealloc c-src/etags.c /^xrealloc (void *ptr, size_t size)$/ +xref-etags-location el-src/emacs/lisp/progmodes/etags.el /^(defclass xref-etags-location (xref-location)$/ +xref-location-line el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod xref-location-line ((l xref-etags-lo/ +xref-location-marker el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod xref-location-marker ((l xref-etags-/ +xref-make-etags-location el-src/emacs/lisp/progmodes/etags.el /^(defun xref-make-etags-location (tag-info file)$/ +xrnew c-src/etags.c /^#define xrnew(op, n, Type) ((op) = (Type *) xreall/ +xx make-src/Makefile /^xx="this line is here because of a fontlock bug$/ +xyz ruby-src/test1.ru /^ alias_method :xyz,$/ +y cp-src/conway.hpp 7 +y cp-src/clheir.hpp 49 +y cp-src/clheir.hpp 58 +y-get-selection-internal c.c /^ Fy_get_selection_internal, Sy_get_selection_/ +yyalloc /usr/share/bison/bison.simple 83 +yyalloc /usr/share/bison/bison.simple 84 +yycheck parse.y 330 +yycheck cccp.y 301 +yyclearin /usr/share/bison/bison.simple 149 +yyclearin /usr/share/bison/bison.simple 150 +yydebug /usr/share/bison/bison.simple 237 +yydebug /usr/share/bison/bison.simple 238 +yydefact parse.y 219 +yydefact cccp.y 239 +yydefgoto parse.y 237 +yydefgoto cccp.y 251 +yyerrhandle /usr/share/bison/bison.simple 848 +yyerrhandle /usr/share/bison/bison.simple 848 +yyerrlab1 /usr/share/bison/bison.simple 823 +yyerrlab1 /usr/share/bison/bison.simple 823 +yyerrok /usr/share/bison/bison.simple 148 +yyerrok /usr/share/bison/bison.simple 149 +yyerror cccp.y /^yyerror (s)$/ +yyerror y-src/cccp.y /^yyerror (s)$/ +yyerrstatus /usr/share/bison/bison.simple 846 +yyerrstatus /usr/share/bison/bison.simple 846 +yylex cccp.y /^yylex ()$/ +yylex y-src/cccp.y /^yylex ()$/ +yyls /usr/share/bison/bison.simple 88 +yyls /usr/share/bison/bison.simple 89 +yylsp /usr/share/bison/bison.simple 748 +yylsp /usr/share/bison/bison.simple 921 +yylsp /usr/share/bison/bison.simple 748 +yylsp /usr/share/bison/bison.simple 921 +yymemcpy /usr/share/bison/bison.simple 264 +yymemcpy /usr/share/bison/bison.simple /^yymemcpy (char *yyto, const char *yyfrom, YYSIZE_T/ +yymemcpy /usr/share/bison/bison.simple 265 +yymemcpy /usr/share/bison/bison.simple /^yymemcpy (char *yyto, const char *yyfrom, YYSIZE_T/ +yyn /usr/share/bison/bison.simple 755 +yyn /usr/share/bison/bison.simple 861 +yyn /usr/share/bison/bison.simple 895 +yyn /usr/share/bison/bison.simple 903 +yyn /usr/share/bison/bison.simple 755 +yyn /usr/share/bison/bison.simple 861 +yyn /usr/share/bison/bison.simple 895 +yyn /usr/share/bison/bison.simple 903 +yynewstate /usr/share/bison/bison.simple 763 +yynewstate /usr/share/bison/bison.simple 925 +yynewstate /usr/share/bison/bison.simple 763 +yynewstate /usr/share/bison/bison.simple 925 +yypact parse.y 242 +yypact cccp.y 256 +yyparse /usr/share/bison/bison.simple /^yyparse (YYPARSE_PARAM_ARG)$/ +yyparse /usr/share/bison/bison.simple /^yyparse (YYPARSE_PARAM_ARG)$/ +yypgoto parse.y 260 +yypgoto cccp.y 268 +yyprhs parse.y 134 +yyprhs cccp.y 167 +yyr1 parse.y 197 +yyr1 cccp.y 219 +yyr2 parse.y 207 +yyr2 cccp.y 228 +yyresult /usr/share/bison/bison.simple 932 +yyresult /usr/share/bison/bison.simple 939 +yyresult /usr/share/bison/bison.simple 947 +yyresult /usr/share/bison/bison.simple 932 +yyresult /usr/share/bison/bison.simple 939 +yyresult /usr/share/bison/bison.simple 947 +yyreturn /usr/share/bison/bison.simple 933 +yyreturn /usr/share/bison/bison.simple 940 +yyreturn /usr/share/bison/bison.simple 933 +yyreturn /usr/share/bison/bison.simple 940 +yyrhs parse.y 142 +yyrhs cccp.y 174 +yyrline parse.y 171 +yyrline cccp.y 195 +yyss /usr/share/bison/bison.simple 85 +yyss /usr/share/bison/bison.simple 86 +yystate /usr/share/bison/bison.simple 757 +yystate /usr/share/bison/bison.simple 761 +yystate /usr/share/bison/bison.simple 875 +yystate /usr/share/bison/bison.simple 924 +yystate /usr/share/bison/bison.simple 757 +yystate /usr/share/bison/bison.simple 761 +yystate /usr/share/bison/bison.simple 875 +yystate /usr/share/bison/bison.simple 924 +yystpcpy /usr/share/bison/bison.simple 316 +yystpcpy /usr/share/bison/bison.simple /^yystpcpy (char *yydest, const char *yysrc)$/ +yystpcpy /usr/share/bison/bison.simple 317 +yystpcpy /usr/share/bison/bison.simple /^yystpcpy (char *yydest, const char *yysrc)$/ +yystrlen /usr/share/bison/bison.simple 293 +yystrlen /usr/share/bison/bison.simple /^yystrlen (const char *yystr)$/ +yystrlen /usr/share/bison/bison.simple 294 +yystrlen /usr/share/bison/bison.simple /^yystrlen (const char *yystr)$/ +yystype cccp.y 118 +yytable parse.y 269 +yytable cccp.y 277 +yytname parse.y 185 +yytname cccp.y 208 +yytranslate parse.y 101 +yytranslate cccp.y 135 +yyvs /usr/share/bison/bison.simple 86 +yyvs /usr/share/bison/bison.simple 87 +yyvsp /usr/share/bison/bison.simple 746 +yyvsp /usr/share/bison/bison.simple 919 +yyvsp /usr/share/bison/bison.simple 746 +yyvsp /usr/share/bison/bison.simple 919 +z c.c 144 +z c.c 164 +z cp-src/clheir.hpp 49 +z cp-src/clheir.hpp 58 +| tex-src/texinfo.tex /^\\def|{{\\tt \\char '174}}$/ +~ tex-src/texinfo.tex /^\\def~{{\\tt \\char '176}}$/ +~A cp-src/c.C /^A::~A() {}$/ +~B cp-src/c.C /^ ~B() {};$/ +~MDiagArray2 cp-src/MDiagArray2.h /^ ~MDiagArray2 (void) { }$/ +~generic_object cp-src/clheir.cpp /^generic_object::~generic_object(void)$/ diff --cc test/manual/etags/ETAGS.good_1 index d2550863428,00000000000..58661bbf600 mode 100644,000000..100644 --- a/test/manual/etags/ETAGS.good_1 +++ b/test/manual/etags/ETAGS.good_1 @@@ -1,4311 -1,0 +1,4311 @@@ + +ada-src/etags-test-for.ada,1969 + type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0 + function Body_RequiredBody_Required/f3,78 + type Type_Specific_Data Type_Specific_Data/t11,280 + function "abs"abs/f19,504 + type Barrier_Function_Pointer Barrier_Function_Pointer/t21,577 + function "="=/f27,722 + type usfreelock_ptr usfreelock_ptr/t30,803 + function p p/f33,891 + procedure LL_Wrapper LL_Wrapper/p37,1054 +function p p/f39,1094 +package Pkg1 Pkg1/s44,1203 + type Private_T Private_T/t46,1220 + package Inner1 Inner1/s48,1250 + procedure Private_T;Private_T/p49,1270 + package Inner2 Inner2/s52,1310 + task Private_T;Private_T/k53,1330 + type Public_T Public_T/t56,1365 + procedure Pkg1_Proc1;Pkg1_Proc1/p62,1450 + procedure Pkg1_Proc2 Pkg1_Proc2/p64,1475 + function Pkg1_Func1 Pkg1_Func1/f66,1514 + function Pkg1_Func2 Pkg1_Func2/f68,1553 + package Pkg1_Pkg1 Pkg1_Pkg1/s71,1622 + procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p72,1645 + task type Task_Type Task_Type/k75,1694 + type Private_T Private_T/t82,1786 +package body Pkg1 Pkg1/b89,1882 + procedure Pkg1_Proc1 Pkg1_Proc1/p91,1904 + package body Inner1 Inner1/b96,1956 + procedure Private_T Private_T/p97,1981 + package body Inner2 Inner2/b103,2054 + task body Private_T Private_T/b104,2079 + task body Task_Type Task_Type/b112,2181 + procedure Pkg1_Proc2 Pkg1_Proc2/p126,2367 + function Pkg1_Func1 Pkg1_Func1/f132,2445 + function Pkg1_Func2 Pkg1_Func2/f134,2496 + package body Pkg1_Pkg1 Pkg1_Pkg1/b140,2596 +package body Pkg1_Pkg1 Pkg1_Pkg1/b146,2663 + procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p147,2689 +function Pkg1_Func1 Pkg1_Func1/f155,2778 +package Truc Truc/s162,2887 +package Truc.Bidule Truc.Bidule/s166,2929 + protected Bidule Bidule/t168,2953 + protected type Machin_T Machin_T/t172,3007 +package body Truc.Bidule Truc.Bidule/b178,3087 + protected body Bidule Bidule/b179,3115 + protected Machin_T Machin_T/t186,3207 + +ada-src/2ataspri.adb,2190 +package body System.Task_Primitives System.Task_Primitives/b64,2603 + package RTE RTE/s69,2712 + package TSL TSL/s70,2759 + function To_void_ptr To_void_ptr/f86,3287 + function To_TCB_Ptr To_TCB_Ptr/f89,3366 + function pthread_mutexattr_setprotocolpthread_mutexattr_setprotocol/f92,3444 + function pthread_mutexattr_setprio_ceilingpthread_mutexattr_setprio_ceiling/f99,3728 + procedure Abort_WrapperAbort_Wrapper/p115,4302 + procedure LL_Wrapper LL_Wrapper/p122,4526 + procedure Initialize_LL_Tasks Initialize_LL_Tasks/p131,4830 + function Self Self/f160,5586 + procedure Initialize_LockInitialize_Lock/p174,5958 + procedure Finalize_Lock Finalize_Lock/p210,6927 + procedure Write_Lock Write_Lock/p226,7338 + procedure Read_Lock Read_Lock/p239,7700 + procedure Unlock Unlock/p246,7850 + procedure Initialize_Cond Initialize_Cond/p258,8160 + procedure Finalize_Cond Finalize_Cond/p286,8979 + procedure Cond_Wait Cond_Wait/p300,9303 + procedure Cond_Timed_WaitCond_Timed_Wait/p312,9661 + procedure Cond_Signal Cond_Signal/p343,10510 + procedure Set_PrioritySet_Priority/p355,10836 + procedure Set_Own_Priority Set_Own_Priority/p372,11243 + function Get_Priority Get_Priority/f385,11598 + function Get_Own_Priority Get_Own_Priority/f398,12023 + procedure Create_LL_TaskCreate_LL_Task/p412,12438 + function To_Start_Addr To_Start_Addr/f426,12873 + procedure Exit_LL_Task Exit_LL_Task/p491,14995 + procedure Abort_Task Abort_Task/p500,15158 + procedure Test_Abort Test_Abort/p518,15716 + procedure Install_Abort_Handler Install_Abort_Handler/p527,15878 + procedure Abort_WrapperAbort_Wrapper/p557,16939 + function Address_To_Call_State Address_To_Call_State/f562,17062 + procedure Install_Error_Handler Install_Error_Handler/p573,17351 + procedure LL_Assert LL_Assert/p599,18146 + procedure LL_Wrapper LL_Wrapper/p608,18299 + procedure Initialize_TAS_Cell Initialize_TAS_Cell/p630,19010 + procedure Finalize_TAS_Cell Finalize_TAS_Cell/p635,19129 + procedure Clear Clear/p640,19236 + procedure Test_And_Set Test_And_Set/p645,19330 + function Is_Set Is_Set/f659,19676 + +ada-src/2ataspri.ads,2313 +package System.Task_Primitives System.Task_Primitives/s58,3169 + type LL_Task_Procedure_Access LL_Task_Procedure_Access/t62,3253 + type Pre_Call_State Pre_Call_State/t64,3331 + type Task_Storage_Size Task_Storage_Size/t66,3378 + type Machine_Exceptions Machine_Exceptions/t68,3433 + type Error_Information Error_Information/t70,3499 + type Lock Lock/t72,3569 + type Condition_Variable Condition_Variable/t73,3594 + type Task_Control_Block Task_Control_Block/t81,3955 + type TCB_Ptr TCB_Ptr/t89,4241 + function Address_To_TCB_Ptr Address_To_TCB_Ptr/f93,4333 + procedure Initialize_LL_Tasks Initialize_LL_Tasks/p96,4425 + function Self Self/f100,4602 + procedure Initialize_Lock Initialize_Lock/p103,4707 + procedure Finalize_Lock Finalize_Lock/p107,4879 + procedure Write_Lock Write_Lock/p111,5034 + procedure Read_Lock Read_Lock/p118,5428 + procedure Unlock Unlock/p128,5995 + procedure Initialize_Cond Initialize_Cond/p135,6300 + procedure Finalize_Cond Finalize_Cond/p138,6413 + procedure Cond_Wait Cond_Wait/p142,6591 + procedure Cond_Timed_WaitCond_Timed_Wait/p155,7396 + procedure Cond_Signal Cond_Signal/p164,7812 + procedure Set_Priority Set_Priority/p169,8040 + procedure Set_Own_Priority Set_Own_Priority/p173,8200 + function Get_Priority Get_Priority/f177,8348 + function Get_Own_Priority Get_Own_Priority/f181,8504 + procedure Create_LL_TaskCreate_LL_Task/p185,8647 + procedure Exit_LL_Task;Exit_LL_Task/p198,9282 + procedure Abort_Task Abort_Task/p203,9516 + procedure Test_Abort;Test_Abort/p210,9878 + type Abort_Handler_Pointer Abort_Handler_Pointer/t217,10233 + procedure Install_Abort_Handler Install_Abort_Handler/p219,10312 + procedure Install_Error_Handler Install_Error_Handler/p226,10741 + procedure LL_Assert LL_Assert/p231,10983 + type Proc Proc/t238,11240 + type TAS_Cell TAS_Cell/t242,11328 + procedure Initialize_TAS_Cell Initialize_TAS_Cell/p249,11670 + procedure Finalize_TAS_Cell Finalize_TAS_Cell/p255,11941 + procedure Clear Clear/p260,12157 + procedure Test_And_Set Test_And_Set/p267,12462 + function Is_Set Is_Set/f275,12877 + type Lock Lock/t283,13155 + type Condition_Variable Condition_Variable/t288,13267 + type TAS_Cell TAS_Cell/t293,13389 + +ada-src/waroquiers.ada,1503 +package Pkg1 Pkg1/s3,89 + type Private_T Private_T/t5,106 + package Inner1 Inner1/s7,136 + procedure Private_T;Private_T/p8,156 + package Inner2 Inner2/s11,196 + task Private_T;Private_T/k12,216 + type Public_T Public_T/t15,251 + procedure Pkg1_Proc1;Pkg1_Proc1/p21,336 + procedure Pkg1_Proc2 Pkg1_Proc2/p23,361 + function Pkg1_Func1 Pkg1_Func1/f25,400 + function Pkg1_Func2 Pkg1_Func2/f27,439 + package Pkg1_Pkg1 Pkg1_Pkg1/s30,508 + procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p31,531 + task type Task_Type Task_Type/k34,580 + type Private_T Private_T/t40,671 +package body Pkg1 Pkg1/b46,766 + procedure Pkg1_Proc1 Pkg1_Proc1/p48,788 + package body Inner1 Inner1/b53,840 + procedure Private_T Private_T/p54,865 + package body Inner2 Inner2/b60,938 + task body Private_T Private_T/b61,963 + task body Task_Type Task_Type/b68,1064 + procedure Pkg1_Proc2 Pkg1_Proc2/p82,1250 + function Pkg1_Func1 Pkg1_Func1/f88,1328 + function Pkg1_Func2 Pkg1_Func2/f90,1379 + package body Pkg1_Pkg1 Pkg1_Pkg1/b96,1479 +package body Pkg1_Pkg1 Pkg1_Pkg1/b100,1544 + procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p101,1570 +function Pkg1_Func1 Pkg1_Func1/f107,1657 +package Truc Truc/s112,1764 +package Truc.Bidule Truc.Bidule/s116,1816 + protected Bidule Bidule/t125,1964 + protected type Machin_T Machin_T/t131,2046 +package body Truc.Bidule Truc.Bidule/b138,2153 + protected body Bidule Bidule/b139,2181 + protected body Machin_T Machin_T/b146,2281 + +c-src/abbrev.c,1432 +Lisp_Object Vabbrev_table_name_list;43,1424 +Lisp_Object Vglobal_abbrev_table;48,1569 +Lisp_Object Vfundamental_mode_abbrev_table;52,1680 +int abbrevs_changed;56,1781 +int abbrev_all_caps;58,1803 +Lisp_Object Vabbrev_start_location;63,1952 +Lisp_Object Vabbrev_start_location_buffer;66,2041 +Lisp_Object Vlast_abbrev;70,2150 +Lisp_Object Vlast_abbrev_text;75,2319 +int last_abbrev_point;79,2409 +Lisp_Object Vpre_abbrev_expand_hook,83,2482 +Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2482 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2546 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2738 +DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3119 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev149,4438 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4809 +DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5277 +DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6241 +DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6756 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11677 +write_abbrev 426,12884 +describe_abbrev 445,13319 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description466,13834 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table506,14990 +syms_of_abbrev 540,16067 + +c-src/torture.c,197 +(*tag1 tag118,452 +#define notag2 26,553 +(*tag2 tag229,630 +(*tag3 tag339,772 +#define notag4 45,861 +(*tag4 tag448,955 +tag5 57,1081 +tag6 66,1208 +int pp1(74,1317 +pp287,1419 +pp3(100,1518 + +c-src/getopt.h,147 +#define _GETOPT_H 19,794 +struct option73,2790 +#define no_argument 89,3117 +#define required_argument 90,3140 +#define optional_argument 91,3168 + +c-src/etags.c,10045 +char pot_etags_version[pot_etags_version81,3470 +# undef DEBUG84,3552 +# define DEBUG 85,3567 +# define DEBUG 87,3594 +# define NDEBUG 88,3617 +# define _GNU_SOURCE 94,3705 +# undef MSDOS100,3876 +# undef WINDOWSNT101,3890 +# define WINDOWSNT102,3909 +# undef MSDOS106,3968 +# define MSDOS 107,3982 +# define MSDOS 110,4032 +# define MAXPATHLEN 115,4111 +# undef HAVE_NTGUI116,4141 +# undef DOS_NT117,4160 +# define DOS_NT118,4176 +# undef assert 135,4482 +# define assert(136,4541 +# undef CTAGS146,4857 +# define CTAGS 147,4872 +# define CTAGS 149,4898 +#define streq(152,4927 +#define strcaseeq(153,4996 +#define strneq(154,5075 +#define strncaseeq(155,5151 +#define CHARS 157,5238 +#define CHAR(158,5278 +#define iswhite(159,5329 +#define notinname(160,5394 +#define begtoken(161,5469 +#define intoken(162,5542 +#define endtoken(163,5614 +#define ISALNUM(165,5684 +#define ISALPHA(166,5722 +#define ISDIGIT(167,5760 +#define ISLOWER(168,5798 +#define lowcase(170,5837 +#define xnew(179,6015 +#define xrnew(180,6083 +typedef void Lang_function 182,6164 +} compressor;188,6365 +} language;199,6835 +typedef struct fdesc201,6848 +} fdesc;212,7366 +typedef struct node_st214,7376 +} node;225,7894 +} linebuffer;239,8248 + at_language,245,8344 + at_regexp,246,8393 + at_filename,247,8437 + at_stdin,248,8473 + at_end 249,8516 +} argument;253,8698 +typedef struct regexp256,8758 +} regexp;268,9325 +static void error 311,10780 +# undef STDIN408,15073 +#define STDIN 411,15095 +static compressor compressors[compressors457,17664 +static const char *Ada_suffixes Ada_suffixes473,17907 +static const char Ada_help 475,17977 +static const char *Asm_suffixes Asm_suffixes493,18580 +static const char Asm_help 504,18976 +static const char *default_C_suffixes default_C_suffixes512,19312 +static const char default_C_help 515,19413 +static const char default_C_help 523,19850 +static const char *Cplusplus_suffixes Cplusplus_suffixes535,20460 +static const char Cplusplus_help 540,20658 +static const char *Cjava_suffixes Cjava_suffixes549,21113 +static char Cjava_help 551,21172 +static const char *Cobol_suffixes Cobol_suffixes556,21337 +static char Cobol_help 558,21402 +static const char *Cstar_suffixes Cstar_suffixes562,21543 +static const char *Erlang_suffixes Erlang_suffixes565,21607 +static const char Erlang_help 567,21673 +const char *Forth_suffixes Forth_suffixes571,21799 +static const char Forth_help 573,21857 +static const char *Fortran_suffixes Fortran_suffixes577,22008 +static const char Fortran_help 579,22085 +static const char *HTML_suffixes HTML_suffixes582,22190 +static const char HTML_help 584,22264 +static const char *Lisp_suffixes Lisp_suffixes589,22452 +static const char Lisp_help 591,22556 +static const char *Lua_suffixes Lua_suffixes598,22871 +static const char Lua_help 600,22934 +static const char *Makefile_filenames Makefile_filenames603,23010 +static const char Makefile_help 605,23133 +static const char *Objc_suffixes Objc_suffixes609,23277 +static const char Objc_help 613,23399 +static const char *Pascal_suffixes Pascal_suffixes619,23714 +static const char Pascal_help 621,23778 +static const char *Perl_suffixes Perl_suffixes626,23966 +static const char *Perl_interpreters Perl_interpreters628,24028 +static const char Perl_help 630,24100 +static const char *PHP_suffixes PHP_suffixes637,24451 +static const char PHP_help 639,24523 +static const char *plain_C_suffixes plain_C_suffixes643,24678 +static const char *PS_suffixes PS_suffixes647,24762 +static const char PS_help 649,24848 +static const char *Prolog_suffixes Prolog_suffixes652,24931 +static const char Prolog_help 654,24993 +static const char *Python_suffixes Python_suffixes658,25107 +static const char Python_help 660,25165 +static const char *Scheme_suffixes Scheme_suffixes665,25347 +static const char Scheme_help 667,25460 +static const char *TeX_suffixes TeX_suffixes672,25683 +static const char TeX_help 674,25781 +static const char *Texinfo_suffixes Texinfo_suffixes686,26316 +static const char Texinfo_help 688,26395 +static const char *Yacc_suffixes Yacc_suffixes691,26492 +static const char Yacc_help 693,26606 +static const char auto_help 699,26856 +static const char none_help 703,27020 +static const char no_lang_help 707,27143 +static language lang_names 718,27355 +print_language_names 753,29532 +# define EMACS_NAME 786,30755 +# define VERSION 789,30811 +print_version 792,30869 +# define PRINT_UNDOCUMENTED_OPTIONS_HELP 804,31173 +print_help 808,31250 +main 981,37438 +get_compressor_from_suffix 1319,46217 +get_language_from_langname 1355,47158 +get_language_from_interpreter 1377,47545 +get_language_from_filename 1399,47976 +process_file_name 1433,48834 +process_file 1555,51665 +init 1632,54150 +find_entries 1656,54901 +make_tag 1814,59707 +pfnote 1856,60942 +free_tree 1917,62744 +free_fdesc 1935,63029 +add_node 1955,63472 +invalidate_nodes 2035,65537 +static int number_len 2068,66193 +total_size_of_entries 2087,66694 +put_entries 2107,67154 +#define C_EXT 2193,68995 +#define C_PLAIN 2194,69037 +#define C_PLPL 2195,69070 +#define C_STAR 2196,69104 +#define C_JAVA 2197,69137 +#define C_AUTO 2198,69172 +#define YACC 2199,69242 +enum sym_type2204,69312 + st_none,2206,69328 + st_C_objprot,2207,69339 + st_C_objprot, st_C_objimpl,2207,69339 + st_C_objprot, st_C_objimpl, st_C_objend,2207,69339 + st_C_gnumacro,2208,69382 + st_C_ignore,2209,69399 + st_C_ignore, st_C_attribute,2209,69399 + st_C_javastruct,2210,69430 + st_C_operator,2211,69449 + st_C_class,2212,69466 + st_C_class, st_C_template,2212,69466 + st_C_struct,2213,69495 + st_C_struct, st_C_extern,2213,69495 + st_C_struct, st_C_extern, st_C_enum,2213,69495 + st_C_struct, st_C_extern, st_C_enum, st_C_define,2213,69495 + st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef2213,69495 +struct C_stab_entry 2271,71278 +hash 2275,71409 +in_word_set 2321,72937 + TOTAL_KEYWORDS 2325,73018 + MIN_WORD_LENGTH 2326,73045 + MAX_WORD_LENGTH 2327,73072 + MIN_HASH_VALUE 2328,73100 + MAX_HASH_VALUE 2329,73126 +C_symtype 2387,74985 +static bool inattribute;2400,75234 + fvnone,2408,75435 + fdefunkey,2409,75466 + fdefunname,2410,75512 + foperator,2411,75556 + fvnameseen,2412,75613 + fstartlist,2413,75666 + finlist,2414,75722 + flistseen,2415,75765 + fignore,2416,75813 + vignore 2417,75856 +} fvdef;2418,75901 +static bool fvextern;2420,75911 + tnone,2428,76089 + tkeyseen,2429,76119 + ttypeseen,2430,76160 + tinbody,2431,76199 + tend,2432,76238 + tignore 2433,76279 +} typdef;2434,76320 + snone,2443,76499 + skeyseen,2445,76575 + stagseen,2446,76620 + scolonseen 2447,76661 +} structdef;2448,76715 +static const char *objtag objtag2453,76809 + dnone,2460,76942 + dsharpseen,2461,76972 + ddefineseen,2462,77025 + dignorerest 2463,77070 +} definedef;2464,77112 + onone,2472,77267 + oprotocol,2473,77297 + oimplementation,2474,77347 + otagseen,2475,77395 + oparenseen,2476,77431 + ocatseen,2477,77486 + oinbody,2478,77525 + omethodsign,2479,77568 + omethodtag,2480,77626 + omethodcolon,2481,77666 + omethodparm,2482,77709 + oignore 2483,77755 +} objdef;2484,77787 +static struct tok2491,77944 +} token;2508,78626 +} cstack;2523,79136 +#define nestlev 2525,79264 +#define instruct 2527,79369 +pushclass_above 2531,79489 +popclass_above 2550,79948 +write_classname 2564,80162 +consider_token 2613,81341 +} lbs[lbs2924,88532 +#define current_lb_is_new 2926,88543 +#define switch_line_buffers(2927,88588 +#define curlb 2929,88641 +#define newlb 2930,88672 +#define curlinepos 2931,88703 +#define newlinepos 2932,88744 +#define plainc 2934,88786 +#define cplpl 2935,88830 +#define cjava 2936,88861 +#define CNL_SAVE_DEFINEDEF(2938,88905 +#define CNL(2947,89117 +make_C_tag 2960,89375 +C_entries 2986,90194 +default_C_entries 3833,110156 +plain_C_entries 3840,110276 +Cplusplus_entries 3847,110364 +Cjava_entries 3854,110460 +Cstar_entries 3861,110550 +Yacc_entries 3868,110642 +#define LOOP_ON_INPUT_LINES(3875,110720 +#define LOOKING_AT(3884,111056 +#define LOOKING_AT_NOCASE(3891,111461 +just_read_file 3901,111861 +F_takeprec 3914,112039 +F_getit 3937,112366 +Fortran_functions 3961,112840 +Ada_getit 4052,114669 +Ada_funcs 4115,116044 +Asm_labels 4228,118582 +Perl_functions 4261,119549 +Python_functions 4357,122057 +PHP_functions 4387,122684 +Cobol_paragraphs 4466,124471 +Makefile_targets 4494,125029 +Pascal_functions 4529,125950 +L_getit 4709,130318 +Lisp_functions 4725,130664 +Lua_functions 4785,131850 +PS_functions 4811,132385 +Forth_words 4841,133053 +Scheme_functions 4877,134092 +static linebuffer *TEX_toktab TEX_toktab4908,134781 +static const char *TEX_defenv TEX_defenv4912,134974 +static char TEX_esc 4920,135261 +static char TEX_opgrp 4921,135289 +static char TEX_clgrp 4922,135318 +TeX_commands 4928,135395 +#define TEX_LESC 4986,136652 +#define TEX_SESC 4987,136674 +TEX_mode 4992,136804 +TEX_decode_env 5026,137509 +Texinfo_nodes 5071,138554 +HTML_labels 5094,139013 +Prolog_functions 5219,142347 +prolog_skip_comment 5255,143128 +prolog_pr 5281,143736 +prolog_atom 5319,144628 +Erlang_functions 5379,145666 +erlang_func 5438,146965 +erlang_attribute 5476,147642 +erlang_atom 5496,148061 +scan_separators 5534,149080 +analyze_regex 5586,150460 +add_regex 5654,152050 +substitute 5767,154797 +free_regexps 5814,155837 +regex_tag_multiline 5836,156291 +nocase_tail 5913,158263 +get_tag 5928,158519 +readline_internal 5959,159455 +readline 6037,161296 +savestr 6230,167243 +savenstr 6240,167473 +skip_spaces 6249,167679 +skip_non_spaces 6258,167833 +skip_name 6267,167983 +fatal 6277,168156 +pfatal 6284,168253 +suggest_asking_for_help 6291,168332 +error 6300,168554 +concat 6313,168846 +etags_getcwd 6329,169259 +relative_filename 6350,169725 +absolute_filename 6389,170751 +absolute_dirname 6453,172416 +filename_is_absolute 6472,172845 +canonicalize_filename 6484,173096 +# define ISUPPER(6491,173235 +linebuffer_init 6514,173656 +linebuffer_setlen 6524,173887 +xmalloc 6536,174148 +xrealloc 6545,174314 + +c-src/exit.c,47 + } __libc_atexit;30,1017 +DEFUN(exit,38,1258 + +c-src/exit.strange_suffix,47 + } __libc_atexit;30,1017 +DEFUN(exit,38,1258 + +c-src/sysdep.h,491 +#define ENTRY(21,870 +#define PSEUDO(26,977 + movl $SYS_##syscall_nam$SYS_##syscall_na31,1137 + movl $SYS_##syscall_name, %eax;eax31,1137 + int $0x80;32,1185 + test %eax,eax33,1215 + test %eax, %eax;eax33,1215 + jl syscall_error;34,1250 +#define XCHG_0 47,1567 +#define XCHG_1 48,1611 +#define XCHG_2 49,1653 +#define XCHG_3 50,1696 +#define XCHG_4 51,1739 +#define XCHG_5 52,1782 +#define r0 54,1826 +#define r1 55,1880 +#define scratch 56,1937 +#define MOVE(57,2006 + +c-src/tab.c,196 +static int count_words(15,263 +static char *get_word(get_word35,553 +void tab_free(59,966 +char **tab_fill(tab_fill70,1129 +int tab_delete_first(91,1638 +int tab_count_words(103,1820 + +c-src/dostorture.c,198 +(*tag1 tag118,468 +#define notag2 26,577 +(*tag2 tag229,657 +(*tag3 tag339,809 +#define notag4 45,904 +(*tag4 tag448,1001 +tag5 57,1136 +tag6 66,1272 +int pp1(74,1389 +pp287,1504 +pp3(100,1616 + +c-src/emacs/src/gmalloc.c,3539 +#define USE_PTHREAD25,1002 +#undef get_current_dir_name33,1126 +#undef malloc64,2110 +#undef realloc65,2124 +#undef calloc66,2139 +#undef free67,2153 +#define malloc 68,2165 +#define realloc 69,2188 +#define calloc 70,2213 +#define aligned_alloc 71,2236 +#define free 72,2273 +#define DUMPED 80,2472 +#define ALLOCATED_BEFORE_DUMPING(81,2507 +extern void *malloc malloc94,2718 +#define INT_BIT 124,3934 +#define BLOCKLOG 125,3977 +#define BLOCKSIZE 126,4018 +#define BLOCKIFY(127,4052 +#define HEAP 131,4215 +#define FINAL_FREE_BLOCKS 135,4391 + } malloc_info;167,5388 +#define BLOCK(176,5620 +#define ADDRESS(177,5682 +struct list186,5939 +struct alignlist196,6153 +#define LOCK(223,7064 +#define UNLOCK(228,7195 +#define LOCK_ALIGNED_BLOCKS(233,7329 +#define UNLOCK_ALIGNED_BLOCKS(238,7484 +#define LOCK(244,7649 +#define UNLOCK(245,7664 +#define LOCK_ALIGNED_BLOCKS(246,7681 +#define UNLOCK_ALIGNED_BLOCKS(247,7711 +enum mcheck_status283,9092 + MCHECK_DISABLED 285,9115 + MCHECK_OK,286,9187 + MCHECK_FREE,287,9226 + MCHECK_HEAD,288,9270 + MCHECK_TAIL 289,9334 +struct mstats308,10153 +char *_heapbase;_heapbase355,11829 +malloc_info *_heapinfo;_heapinfo358,11927 +static size_t heapsize;361,11983 +size_t _heapindex;364,12047 +size_t _heaplimit;367,12109 +struct list _fraghead[_fraghead370,12171 +size_t _chunks_used;373,12229 +size_t _bytes_used;374,12250 +size_t _chunks_free;375,12270 +size_t _bytes_free;376,12291 +int __malloc_initialized;379,12340 +size_t __malloc_extra_blocks;381,12367 +static int state_protected_p;400,12912 +static size_t last_state_size;401,12942 +static malloc_info *last_heapinfo;last_heapinfo402,12973 +protect_malloc_state 405,13014 +#define PROTECT_MALLOC_STATE(426,13627 +#define PROTECT_MALLOC_STATE(429,13697 +align 435,13794 +get_contiguous_space 466,14616 +register_heapinfo 497,15325 +pthread_mutex_t _malloc_mutex 517,15879 +pthread_mutex_t _aligned_blocks_mutex 518,15938 +int _malloc_thread_enabled_p;519,16005 +malloc_atfork_handler_prepare 522,16048 +malloc_atfork_handler_parent 529,16139 +malloc_atfork_handler_child 536,16233 +malloc_enable_thread 544,16375 +malloc_initialize_1 563,16961 +__malloc_initialize 594,17793 +static int morecore_recursing;604,17926 +morecore_nolock 609,18066 +_malloc_internal_nolock 722,21584 +_malloc_internal 920,28102 +malloc 932,28247 +_malloc 961,29140 +_free 967,29196 +_realloc 973,29240 +struct alignlist *_aligned_blocks _aligned_blocks1004,30345 +_free_internal_nolock 1009,30474 +_free_internal 1255,38476 +free 1265,38603 +weak_alias 1277,38799 +#define min(1306,39813 +_realloc_internal_nolock 1319,40309 +_realloc_internal 1435,43563 +realloc 1447,43726 +calloc 1478,44894 +#define __sbrk 1513,46042 +__default_morecore 1525,46511 +aligned_alloc 1557,47522 +memalign 1647,49704 +posix_memalign 1656,49909 +static size_t pagesize;1703,51317 +valloc 1706,51349 +#undef malloc1715,51490 +#undef realloc1716,51504 +#undef calloc1717,51519 +#undef aligned_alloc1718,51533 +#undef free1719,51554 +hybrid_malloc 1736,52083 +hybrid_calloc 1744,52188 +hybrid_free 1752,52319 +hybrid_aligned_alloc 1765,52626 +hybrid_realloc 1780,52984 +hybrid_get_current_dir_name 1811,53797 +#define MAGICWORD 1854,55206 +#define MAGICFREE 1855,55261 +#define MAGICBYTE 1856,55316 +#define MALLOCFLOOD 1857,55348 +#define FREEFLOOD 1858,55382 +struct hdr1860,55415 +checkhdr 1867,55581 +freehook 1891,56022 +mallochook 1927,56804 +reallochook 1944,57143 +mabort 1978,57901 +static int mcheck_used 2012,58586 +mcheck 2015,58619 +mprobe 2035,59138 + +c-src/emacs/src/regex.h,3761 +#define _REGEX_H 21,836 +typedef unsigned long reg_syntax_t;43,1577 +#define RE_BACKSLASH_ESCAPE_IN_LISTS 47,1749 +#define RE_BK_PLUS_QM 52,1969 +#define RE_CHAR_CLASSES 58,2298 +#define RE_CONTEXT_INDEP_ANCHORS 72,3032 +#define RE_CONTEXT_INDEP_OPS 80,3458 +#define RE_CONTEXT_INVALID_OPS 84,3658 +#define RE_DOT_NEWLINE 88,3801 +#define RE_DOT_NOT_NULL 92,3937 +#define RE_HAT_LISTS_NOT_NEWLINE 96,4082 +#define RE_INTERVALS 101,4292 +#define RE_LIMITED_OPS 105,4441 +#define RE_NEWLINE_ALT 109,4583 +#define RE_NO_BK_BRACES 114,4773 +#define RE_NO_BK_PARENS 118,4964 +#define RE_NO_BK_REFS 122,5120 +#define RE_NO_BK_VBAR 126,5316 +#define RE_NO_EMPTY_RANGES 132,5610 +#define RE_UNMATCHED_RIGHT_PAREN_ORD 136,5766 +#define RE_NO_POSIX_BACKTRACKING 140,5937 +#define RE_NO_GNU_OPS 144,6133 +#define RE_FRUGAL 147,6253 +#define RE_SHY_GROUPS 150,6360 +#define RE_NO_NEWLINE_ANCHOR 153,6468 +#define RE_DEBUG 161,6884 +#define RE_SYNTAX_EMACS 183,7684 +#define RE_SYNTAX_AWK 186,7780 +#define RE_SYNTAX_GNU_AWK 193,8084 +#define RE_SYNTAX_POSIX_AWK 197,8255 +#define RE_SYNTAX_GREP 201,8393 +#define RE_SYNTAX_EGREP 206,8549 +#define RE_SYNTAX_POSIX_EGREP 212,8765 +#define RE_SYNTAX_ED 216,8910 +#define RE_SYNTAX_SED 218,8954 +#define _RE_SYNTAX_POSIX_COMMON 221,9072 +#define RE_SYNTAX_POSIX_BASIC 225,9215 +#define RE_SYNTAX_POSIX_MINIMAL_BASIC 231,9508 +#define RE_SYNTAX_POSIX_EXTENDED 234,9598 +#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED 242,9967 +# undef RE_DUP_MAX253,10454 +#define RE_DUP_MAX 256,10540 +#define REG_EXTENDED 263,10762 +#define REG_ICASE 267,10886 +#define REG_NEWLINE 272,11070 +#define REG_NOSUB 276,11248 +#define REG_NOTBOL 286,11614 +#define REG_NOTEOL 289,11688 + REG_ENOSYS 297,11859 + REG_NOERROR 300,11941 + REG_NOMATCH,301,11976 + REG_BADPAT,305,12123 + REG_ECOLLATE,306,12162 + REG_ECTYPE,307,12203 + REG_EESCAPE,308,12255 + REG_ESUBREG,309,12298 + REG_EBRACK,310,12345 + REG_EPAREN,311,12391 + REG_EBRACE,312,12436 + REG_BADBR,313,12472 + REG_ERANGE,314,12519 + REG_ESPACE,315,12560 + REG_BADRPT,316,12601 + REG_EEND,319,12693 + REG_ESIZE,320,12728 + REG_ERPAREN,321,12790 + REG_ERANGEX 322,12859 +} reg_errcode_t;323,12911 +# define RE_TRANSLATE_TYPE 332,13273 +struct re_pattern_buffer335,13315 +#define REGS_UNALLOCATED 376,14889 +#define REGS_REALLOCATE 377,14916 +#define REGS_FIXED 378,14942 +typedef struct re_pattern_buffer regex_t;416,16098 +typedef ssize_t regoff_t;423,16492 +struct re_registers428,16652 +# define RE_NREGS 440,16942 +} regmatch_t;451,17317 +# define _Restrict_ 540,20886 +# define _Restrict_ 542,20979 +# define _Restrict_544,21018 +# define _Restrict_arr_ 555,21418 +# define _Restrict_arr_557,21461 +# define CHAR_CLASS_MAX_LENGTH 593,22470 +# define CHAR_CLASS_MAX_LENGTH 597,22648 +typedef wctype_t re_wctype_t;599,22692 +typedef wchar_t re_wchar_t;600,22722 +# define re_wctype 601,22750 +# define re_iswctype 602,22776 +# define re_wctype_to_bit(603,22806 +# define CHAR_CLASS_MAX_LENGTH 605,22844 +# define btowc(606,22906 +typedef enum { RECC_ERROR 609,22953 + RECC_ALNUM,610,22984 + RECC_ALNUM, RECC_ALPHA,610,22984 + RECC_ALNUM, RECC_ALPHA, RECC_WORD,610,22984 + RECC_GRAPH,611,23027 + RECC_GRAPH, RECC_PRINT,611,23027 + RECC_LOWER,612,23059 + RECC_LOWER, RECC_UPPER,612,23059 + RECC_PUNCT,613,23091 + RECC_PUNCT, RECC_CNTRL,613,23091 + RECC_DIGIT,614,23123 + RECC_DIGIT, RECC_XDIGIT,614,23123 + RECC_BLANK,615,23156 + RECC_BLANK, RECC_SPACE,615,23156 + RECC_MULTIBYTE,616,23188 + RECC_MULTIBYTE, RECC_NONASCII,616,23188 + RECC_ASCII,617,23227 + RECC_ASCII, RECC_UNIBYTE617,23227 +} re_wctype_t;618,23260 +typedef int re_wchar_t;623,23387 + +c-src/emacs/src/keyboard.c,13565 +volatile int interrupt_input_blocked;76,1808 +volatile bool pending_signals;80,1944 +#define KBD_BUFFER_SIZE 82,1976 +KBOARD *initial_kboard;initial_kboard84,2006 +KBOARD *current_kboard;current_kboard85,2030 +static KBOARD *all_kboards;all_kboards86,2054 +static bool single_kboard;89,2154 +#define NUM_RECENT_KEYS 91,2182 +static int recent_keys_index;94,2269 +static int total_keys;97,2357 +static Lisp_Object recent_keys;100,2443 +Lisp_Object this_command_keys;107,2777 +ptrdiff_t this_command_key_count;108,2808 +static bool this_command_key_count_reset;112,2922 +static Lisp_Object raw_keybuf;116,3074 +static int raw_keybuf_count;117,3105 +#define GROW_RAW_KEYBUF 119,3135 +static ptrdiff_t this_single_command_key_start;125,3350 +static ptrdiff_t before_command_key_count;129,3498 +static ptrdiff_t before_command_echo_length;130,3541 +sigjmp_buf return_to_command_loop;135,3677 +static Lisp_Object recover_top_level_message;138,3791 +static Lisp_Object regular_top_level_message;143,3930 +static sys_jmp_buf getcjmp;147,4031 +bool waiting_for_input;150,4095 +static bool echoing;154,4186 +static struct kboard *ok_to_echo_at_next_pause;ok_to_echo_at_next_pause159,4328 +struct kboard *echo_kboard;echo_kboard166,4632 +Lisp_Object echo_message_buffer;171,4744 +bool immediate_quit;174,4837 +int quit_char;192,5623 +EMACS_INT command_loop_level;195,5680 +Lisp_Object unread_switch_frame;204,6108 +static ptrdiff_t last_non_minibuf_size;207,6216 +uintmax_t num_input_events;210,6334 +static EMACS_INT last_auto_save;214,6428 +static ptrdiff_t last_point_position;217,6523 +Lisp_Object internal_last_event_frame;228,7028 +static Lisp_Object read_key_sequence_cmd;232,7168 +static Lisp_Object read_key_sequence_remapped;233,7210 +static FILE *dribble;dribble236,7310 +bool input_pending;239,7368 +static bool input_was_pending;287,10022 +static struct input_event kbd_buffer[kbd_buffer291,10107 +static struct input_event *kbd_fetch_ptr;kbd_fetch_ptr297,10386 +static struct input_event * volatile kbd_store_ptr;302,10601 +unsigned timers_run;320,11296 +struct timespec *input_available_clear_time;input_available_clear_time324,11408 +bool interrupt_input;328,11573 +bool interrupts_deferred;331,11671 +static struct timespec timer_idleness_start_time;335,11746 +static struct timespec timer_last_idleness_start_time;340,11916 +#define READABLE_EVENTS_DO_TIMERS_NOW 346,12046 +#define READABLE_EVENTS_FILTER_EVENTS 347,12094 +#define READABLE_EVENTS_IGNORE_SQUEEZABLES 348,12142 +kset_echo_string 392,14088 +kset_kbd_queue 397,14184 +kset_keyboard_translate_table 402,14276 +kset_last_prefix_arg 407,14399 +kset_last_repeatable_command 412,14504 +kset_local_function_key_map 417,14625 +kset_overriding_terminal_local_map 422,14744 +kset_real_last_command 427,14877 +kset_system_key_syms 432,14986 +echo_add_key 443,15249 +echo_char 527,17527 +echo_dash 541,17813 +echo_now 586,19140 +cancel_echoing 635,20614 +echo_length 648,20922 +echo_truncate 660,21253 +add_command_key 672,21582 +recursive_edit_1 697,22406 +record_auto_save 742,23848 +force_auto_save_soon 751,24016 +DEFUN ("recursive-edit", Frecursive_edit,recursive-edit759,24137 +recursive_edit_unwind 804,25747 +any_kboard_state 817,26013 +single_kboard_state 838,26665 +not_single_kboard_state 848,26803 +struct kboard_stack858,27065 +static struct kboard_stack *kboard_stack;kboard_stack864,27138 +push_kboard 867,27186 +pop_kboard 879,27375 +temporarily_switch_to_single_kboard 914,28263 +record_single_kboard_state 943,29437 +restore_kboard_configuration 952,29621 +cmd_error 970,30077 +cmd_error_internal 1024,31510 +DEFUN ("command-error-default-function", Fcommand_error_default_function,command-error-default-function1043,32030 +command_loop 1094,33916 +command_loop_2 1134,35135 +top_level_2 1146,35339 +top_level_1 1152,35417 +DEFUN ("top-level", Ftop_level,top-level1164,35787 +user_error 1183,36288 +DEFUN ("exit-recursive-edit", Fexit_recursive_edit,exit-recursive-edit1189,36429 +DEFUN ("abort-recursive-edit", Fabort_recursive_edit,abort-recursive-edit1201,36819 +tracking_off 1216,37281 +DEFUN ("internal--track-mouse", Ftrack_mouse,track-mouse1234,37816 +bool ignore_mouse_drag_p;1256,38392 +some_mouse_moved 1259,38441 +Lisp_Object last_undo_boundary;1287,39032 +command_loop_1 1294,39273 +read_menu_command 1649,50889 +adjust_point_for_property 1678,51617 +safe_run_hooks_1 1831,57339 +safe_run_hooks_error 1841,57569 +safe_run_hook_funcall 1878,58576 +safe_run_hooks 1893,59058 +int poll_suppress_count;1908,59397 +static struct atimer *poll_timer;poll_timer1915,59487 +poll_for_input_1 1919,59589 +poll_for_input 1930,59789 +start_polling 1942,60053 +input_polling_used 1979,61091 +stop_polling 1994,61390 +set_poll_suppress_count 2009,61759 +bind_polling_period 2029,62141 +make_ctrl_char 2048,62492 +show_help_echo 2113,64455 +static Lisp_Object help_form_saved_window_configs;2156,65638 +read_char_help_form_unwind 2158,65701 +#define STOP_POLLING 2166,65959 +#define RESUME_POLLING 2170,66084 +read_event_from_main_queue 2175,66229 +read_decoded_event_from_main_queue 2249,68417 +#define MAX_ENCODED_BYTES 2254,68664 +echo_keystrokes_p 2342,71556 +read_char 2376,72848 +record_menu_key 3225,98949 +help_char_p 3258,99674 +record_char 3273,99953 +save_getcjmp 3412,104235 +restore_getcjmp 3418,104326 +readable_events 3430,104697 +int stop_character EXTERNALLY_VISIBLE;3497,106437 +event_to_kboard 3500,106493 +kbd_buffer_nr_stored 3522,107142 +kbd_buffer_store_event 3534,107483 +kbd_buffer_store_event_hold 3550,108025 +kbd_buffer_unget_event 3684,111617 +#define INPUT_EVENT_POS_MAX 3698,112018 +#define INPUT_EVENT_POS_MIN 3701,112147 +position_to_Time 3706,112287 +Time_to_position 3716,112514 +gen_help_event 3738,113171 +kbd_buffer_store_help_event 3756,113611 +discard_mouse_events 3773,113976 +kbd_buffer_events_waiting 3803,114711 +clear_event 3823,115068 +kbd_buffer_get_event 3836,115408 +process_special_events 4258,127881 +swallow_events 4322,129705 +timer_start_idle 4339,130098 +timer_stop_idle 4355,130576 +timer_resume_idle 4363,130720 +struct input_event last_timer_event EXTERNALLY_VISIBLE;4372,130912 +Lisp_Object pending_funcalls;4377,131172 +decode_timer 4381,131293 +timer_check_2 4414,132246 +timer_check 4572,136817 +DEFUN ("current-idle-time", Fcurrent_idle_time,current-idle-time4607,137662 +static Lisp_Object accent_key_syms;4625,138239 +static Lisp_Object func_key_syms;4626,138275 +static Lisp_Object mouse_syms;4627,138309 +static Lisp_Object wheel_syms;4628,138340 +static Lisp_Object drag_n_drop_syms;4629,138371 +static const int lispy_accent_codes[lispy_accent_codes4634,138516 +static const char *const lispy_accent_keys[lispy_accent_keys4741,139878 +#define FUNCTION_KEY_OFFSET 4766,140314 +const char *const lispy_function_keys[lispy_function_keys4768,140347 +static const char *const lispy_multimedia_keys[lispy_multimedia_keys4962,148901 +static const char *const lispy_kana_keys[lispy_kana_keys5026,150135 +#define FUNCTION_KEY_OFFSET 5061,151751 +static const char *const lispy_function_keys[lispy_function_keys5065,151894 +#define ISO_FUNCTION_KEY_OFFSET 5149,154429 +static const char *const iso_lispy_function_keys[iso_lispy_function_keys5151,154469 +static Lisp_Object Vlispy_mouse_stem;5172,155328 +static const char *const lispy_wheel_names[lispy_wheel_names5174,155367 +static const char *const lispy_drag_n_drop_names[lispy_drag_n_drop_names5181,155619 +static short const scroll_bar_parts[scroll_bar_parts5189,155885 +static Lisp_Object button_down_location;5210,156910 +static int last_mouse_button;5215,157065 +static int last_mouse_x;5216,157095 +static int last_mouse_y;5217,157120 +static Time button_down_time;5218,157145 +static int double_click_count;5222,157229 +make_lispy_position 5228,157390 +toolkit_menubar_in_use 5456,163953 +make_scroll_bar_position 5469,164321 +make_lispy_event 5485,164967 +make_lispy_movement 6104,183531 +make_lispy_switch_frame 6131,184262 +make_lispy_focus_in 6137,184369 +make_lispy_focus_out 6145,184495 +parse_modifiers_uncached 6163,184945 +#define SINGLE_LETTER_MOD(6185,185465 +#undef SINGLE_LETTER_MOD6212,185906 +#define MULTI_LETTER_MOD(6214,185932 +#undef MULTI_LETTER_MOD6231,186400 +apply_modifiers_uncached 6273,187574 +static const char *const modifier_names[modifier_names6319,189193 +#define NUM_MOD_NAMES 6325,189399 +static Lisp_Object modifier_symbols;6327,189449 +lispy_modifier_list 6331,189586 +#define KEY_TO_CHAR(6353,190252 +parse_modifiers 6356,190328 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517 +apply_modifiers 6422,192391 +reorder_modifiers 6491,194720 +modify_event_symbol 6536,196528 +DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199244 +parse_solitary_modifier 6695,201135 +#define SINGLE_LETTER_MOD(6701,201258 +#define MULTI_LETTER_MOD(6705,201343 +#undef SINGLE_LETTER_MOD6763,202641 +#undef MULTI_LETTER_MOD6764,202666 +lucid_event_type_list_p 6775,202889 +get_input_pending 6814,203960 +record_asynch_buffer_change 6834,204579 +gobble_input 6872,205702 +tty_read_avail_input 6967,208310 +handle_async_input 7149,214039 +process_pending_signals 7165,214359 +unblock_input_to 7177,214645 +unblock_input 7200,215277 +totally_unblock_input 7209,215445 +handle_input_available_signal 7217,215529 +deliver_input_available_signal 7226,215700 +struct user_signal_info7235,215865 +static struct user_signal_info *user_signals user_signals7250,216090 +add_user_signal 7253,216149 +handle_user_signal 7275,216598 +deliver_user_signal 7316,217558 +find_user_signal_name 7322,217659 +store_user_signal_events 7334,217841 +static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416 +static Lisp_Object menu_bar_items_vector;7368,218630 +static int menu_bar_items_index;7369,218672 +static const char *separator_names[separator_names7372,218707 +menu_separator_name_p 7393,219148 +menu_bar_items 7426,219852 +Lisp_Object item_properties;7568,224603 +menu_bar_item 7571,224645 +menu_item_eval_property_1 7647,227175 +eval_dyn 7658,227465 +menu_item_eval_property 7666,227675 +parse_menu_item 7686,228341 +static Lisp_Object tool_bar_items_vector;7965,236336 +static Lisp_Object tool_bar_item_properties;7970,236510 +static int ntool_bar_items;7974,236606 +tool_bar_items 7990,237083 +process_tool_bar_item 8075,239892 +#define PROP(8112,240969 +set_prop 8114,241038 +parse_tool_bar_item 8167,242453 +#undef PROP8379,248844 +init_tool_bar_items 8387,248969 +append_tool_bar_item 8401,249261 +read_char_x_menu_prompt 8443,250771 +read_char_minibuf_menu_prompt 8503,252445 +#define PUSH_C_STR(8527,253014 +follow_key 8726,258553 +active_maps 8733,258695 +typedef struct keyremap8742,259021 +} keyremap;8754,259464 +access_keymap_keyremap 8764,259808 +keyremap_step 8811,261450 +test_undefined 8867,262934 +read_key_sequence 8916,264861 +read_key_sequence_vs 9826,295821 +DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299982 +detect_input_pending 9950,300488 +detect_input_pending_ignore_squeezables 9959,300654 +detect_input_pending_run_timers 9967,300870 +clear_input_pending 9985,301362 +requeued_events_pending_p 9997,301732 +DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813 +DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596 +DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303958 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304380 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305495 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306510 +DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069 +DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406 +DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447 +DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949 +stuff_buffered_input 10285,311045 +set_waiting_for_input 10323,312016 +clear_waiting_for_input 10337,312390 +handle_interrupt_signal 10351,312754 +deliver_interrupt_signal 10378,313642 +static int volatile force_quit_count;10387,313932 +handle_interrupt 10401,314414 +quit_throw_to_read_char 10541,318711 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288 +DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320516 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321432 +DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706 +DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570 +DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324459 +DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837 +DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060 +init_kboard 10861,328214 +allocate_kboard 10893,329284 +wipe_kboard 10909,329637 +delete_kboard 10917,329751 +init_keyboard 10942,330281 +struct event_head11021,332696 +static const struct event_head head_table[head_table11027,332747 +syms_of_keyboard 11045,333577 +keys_of_keyboard 11841,367115 +mark_kboards 11916,370434 + +c-src/emacs/src/lisp.h,20567 +#define EMACS_LISP_H22,800 +#define DECLARE_GDB_SYM(47,1421 +# define DEFINE_GDB_SYMBOL_BEGIN(49,1508 +# define DEFINE_GDB_SYMBOL_END(50,1578 +# define DEFINE_GDB_SYMBOL_BEGIN(52,1625 +# define DEFINE_GDB_SYMBOL_END(53,1702 +#undef min57,1790 +#undef max58,1801 +#define max(59,1812 +#define min(60,1854 +#define ARRAYELTS(63,1936 +#define GCTYPEBITS 67,2079 +DEFINE_GDB_SYMBOL_BEGIN GCTYPEBITS66,2037 +# define NONPOINTER_BITS 78,2567 +# define NONPOINTER_BITS 80,2600 +typedef int EMACS_INT;91,3023 +typedef unsigned int EMACS_UINT;92,3046 +# define EMACS_INT_MAX 93,3079 +# define pI 94,3111 +typedef long int EMACS_INT;96,3203 +typedef unsigned long EMACS_UINT;97,3231 +# define EMACS_INT_MAX 98,3265 +# define pI 99,3298 +typedef long long int EMACS_INT;103,3477 +typedef unsigned long long int EMACS_UINT;104,3510 +# define EMACS_INT_MAX 105,3553 +# define pI 106,3587 +enum { BOOL_VECTOR_BITS_PER_CHAR 114,3804 +#define BOOL_VECTOR_BITS_PER_CHAR 115,3840 +typedef size_t bits_word;123,4165 +# define BITS_WORD_MAX 124,4191 +enum { BITS_PER_BITS_WORD 125,4223 +typedef unsigned char bits_word;127,4290 +# define BITS_WORD_MAX 128,4323 +enum { BITS_PER_BITS_WORD 129,4386 + BITS_PER_CHAR 136,4570 + BITS_PER_SHORT 137,4605 + BITS_PER_LONG 138,4657 + BITS_PER_EMACS_INT 139,4712 +typedef intmax_t printmax_t;148,5089 +typedef uintmax_t uprintmax_t;149,5118 +# define pMd 150,5149 +# define pMu 151,5170 +typedef EMACS_INT printmax_t;153,5197 +typedef EMACS_UINT uprintmax_t;154,5227 +# define pMd 155,5259 +# define pMu 156,5278 +# define pD 165,5664 +# define pD 167,5709 +# define pD 169,5756 +# define pD 171,5779 +# define eassert(200,7062 +# define eassume(201,7140 +# define eassert(208,7319 +# define eassume(212,7450 +enum Lisp_Bits239,8519 +#define GCALIGNMENT 243,8647 + VALBITS 246,8742 + INTTYPEBITS 249,8838 + FIXNUM_BITS 252,8945 +#define VAL_MAX 263,9327 +#define USE_LSB_TAG 271,9777 +DEFINE_GDB_SYMBOL_BEGIN USE_LSB_TAG270,9733 +# define alignas(281,10077 +# define GCALIGNED 288,10227 +# define GCALIGNED 290,10292 +# define lisp_h_XLI(327,11642 +# define lisp_h_XIL(328,11673 +# define lisp_h_XLI(330,11724 +# define lisp_h_XIL(331,11751 +#define lisp_h_CHECK_LIST_CONS(333,11785 +#define lisp_h_CHECK_NUMBER(334,11856 +#define lisp_h_CHECK_SYMBOL(335,11927 +#define lisp_h_CHECK_TYPE(336,11996 +#define lisp_h_CONSP(338,12107 +#define lisp_h_EQ(339,12156 +#define lisp_h_FLOATP(340,12201 +#define lisp_h_INTEGERP(341,12252 +#define lisp_h_MARKERP(342,12333 +#define lisp_h_MISCP(343,12408 +#define lisp_h_NILP(344,12457 +#define lisp_h_SET_SYMBOL_VAL(345,12493 +#define lisp_h_SYMBOL_CONSTANT_P(347,12607 +#define lisp_h_SYMBOL_VAL(348,12671 +#define lisp_h_SYMBOLP(350,12772 +#define lisp_h_VECTORLIKEP(351,12825 +#define lisp_h_XCAR(352,12886 +#define lisp_h_XCDR(353,12924 +#define lisp_h_XCONS(354,12964 +#define lisp_h_XHASH(356,13059 +#define lisp_h_XPNTR(357,13093 +# define lisp_h_check_cons_list(360,13221 +# define lisp_h_make_number(363,13289 +# define lisp_h_XFASTINT(365,13392 +# define lisp_h_XINT(366,13429 +# define lisp_h_XSYMBOL(367,13478 +# define lisp_h_XTYPE(371,13631 +# define lisp_h_XUNTAG(372,13696 +# define XLI(381,14086 +# define XIL(382,14117 +# define CHECK_LIST_CONS(383,14148 +# define CHECK_NUMBER(384,14209 +# define CHECK_SYMBOL(385,14258 +# define CHECK_TYPE(386,14307 +# define CONSP(387,14382 +# define EQ(388,14417 +# define FLOATP(389,14452 +# define INTEGERP(390,14489 +# define MARKERP(391,14530 +# define MISCP(392,14569 +# define NILP(393,14604 +# define SET_SYMBOL_VAL(394,14637 +# define SYMBOL_CONSTANT_P(395,14700 +# define SYMBOL_VAL(396,14763 +# define SYMBOLP(397,14812 +# define VECTORLIKEP(398,14851 +# define XCAR(399,14898 +# define XCDR(400,14931 +# define XCONS(401,14964 +# define XHASH(402,14999 +# define XPNTR(403,15034 +# define check_cons_list(405,15097 +# define make_number(408,15176 +# define XFASTINT(409,15224 +# define XINT(410,15266 +# define XSYMBOL(411,15300 +# define XTYPE(412,15340 +# define XUNTAG(413,15376 +#define LISP_MACRO_DEFUN(421,15672 +#define LISP_MACRO_DEFUN_VOID(425,15845 +#define INTMASK 437,16289 +#define case_Lisp_Int 438,16342 +#define ENUM_BF(445,16681 +#define ENUM_BF(447,16722 +enum Lisp_Type451,16763 + Lisp_Symbol 454,16851 + Lisp_Misc 458,16993 + Lisp_Int0 461,17067 + Lisp_Int1 462,17086 + Lisp_String 466,17264 + Lisp_Vectorlike 472,17543 + Lisp_Cons 475,17632 + Lisp_Float 477,17670 +enum Lisp_Misc_Type485,18016 + Lisp_Misc_Free 487,18040 + Lisp_Misc_Marker,488,18069 + Lisp_Misc_Overlay,489,18091 + Lisp_Misc_Save_Value,490,18114 + Lisp_Misc_Finalizer,491,18140 + Lisp_Misc_Float,494,18275 + Lisp_Misc_Limit496,18359 +enum Lisp_Fwd_Type502,18543 + Lisp_Fwd_Int,504,18566 + Lisp_Fwd_Bool,505,18619 + Lisp_Fwd_Obj,506,18670 + Lisp_Fwd_Buffer_Obj,507,18729 + Lisp_Fwd_Kboard_Obj 508,18800 +typedef struct { EMACS_INT i; } Lisp_Object;567,21781 +#define LISP_INITIALLY(569,21827 +#undef CHECK_LISP_OBJECT_TYPE571,21858 +enum CHECK_LISP_OBJECT_TYPE 572,21888 +enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 572,21888 +typedef EMACS_INT Lisp_Object;577,22064 +#define LISP_INITIALLY(578,22095 +enum CHECK_LISP_OBJECT_TYPE 579,22125 +enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 579,22125 +#define LISP_INITIALLY_ZERO 582,22226 +enum symbol_interned639,24199 + SYMBOL_UNINTERNED 641,24222 + SYMBOL_INTERNED 642,24247 + SYMBOL_INTERNED_IN_INITIAL_OBARRAY 643,24270 +enum symbol_redirect646,24315 + SYMBOL_PLAINVAL 648,24338 + SYMBOL_VARALIAS 649,24362 + SYMBOL_LOCALIZED 650,24386 + SYMBOL_FORWARDED 651,24410 +struct Lisp_Symbol654,24437 + ENUM_BF 663,24793 +#define EXFUN(707,26252 +#define DEFUN_ARGS_MANY 712,26446 +#define DEFUN_ARGS_UNEVALLED 713,26498 +#define DEFUN_ARGS_0 714,26541 +#define DEFUN_ARGS_1 715,26569 +#define DEFUN_ARGS_2 716,26604 +#define DEFUN_ARGS_3 717,26652 +#define DEFUN_ARGS_4 718,26713 +#define DEFUN_ARGS_5 719,26787 +#define DEFUN_ARGS_6 721,26880 +#define DEFUN_ARGS_7 723,26986 +#define DEFUN_ARGS_8 725,27105 +#define TAG_PTR(729,27296 +#define TAG_SYMOFFSET(734,27543 +#define XLI_BUILTIN_LISPSYM(741,27842 +#define DEFINE_LISP_SYMBOL(746,28101 +# define DEFINE_NON_NIL_Q_SYMBOL_MACROS 755,28572 +LISP_MACRO_DEFUN 762,28777 +# define ARRAY_MARK_FLAG 768,29024 +# define PSEUDOVECTOR_FLAG 774,29267 +enum pvec_type780,29568 + PVEC_NORMAL_VECTOR,782,29585 + PVEC_FREE,783,29607 + PVEC_PROCESS,784,29620 + PVEC_FRAME,785,29636 + PVEC_WINDOW,786,29650 + PVEC_BOOL_VECTOR,787,29665 + PVEC_BUFFER,788,29685 + PVEC_HASH_TABLE,789,29700 + PVEC_TERMINAL,790,29719 + PVEC_WINDOW_CONFIGURATION,791,29736 + PVEC_SUBR,792,29765 + PVEC_OTHER,793,29778 + PVEC_COMPILED,795,29856 + PVEC_CHAR_TABLE,796,29873 + PVEC_SUB_CHAR_TABLE,797,29892 + PVEC_FONT 798,29915 +enum More_Lisp_Bits801,29991 + PSEUDOVECTOR_SIZE_BITS 808,30382 + PSEUDOVECTOR_SIZE_MASK 809,30415 + PSEUDOVECTOR_REST_BITS 813,30625 + PSEUDOVECTOR_REST_MASK 814,30658 + PSEUDOVECTOR_AREA_BITS 818,30823 + PVEC_TYPE_MASK 819,30901 +# define VALMASK 829,31302 +DEFINE_GDB_SYMBOL_BEGIN VALMASK828,31257 +#define MOST_POSITIVE_FIXNUM 834,31532 +#define MOST_NEGATIVE_FIXNUM 835,31592 +XINT 874,32684 +XFASTINT 889,33035 +XSYMBOL 899,33263 +XTYPE 910,33481 +XUNTAG 918,33661 +LISP_MACRO_DEFUN 927,33857 +LISP_MACRO_DEFUN 940,34242 +#define FIXNUM_OVERFLOW_P(958,34855 +LISP_MACRO_DEFUN FIXNUM_OVERFLOW_P952,34632 +LISP_MACRO_DEFUN 970,35171 +XSTRING 980,35391 +#define SYMBOL_INDEX(988,35575 +XFLOAT 991,35636 +XPROCESS 1000,35778 +XWINDOW 1007,35895 +XTERMINAL 1014,36012 +XSUBR 1021,36134 +XBUFFER 1028,36245 +XCHAR_TABLE 1035,36369 +XSUB_CHAR_TABLE 1042,36506 +XBOOL_VECTOR 1049,36648 +make_lisp_ptr 1058,36827 +make_lisp_symbol 1066,37013 +builtin_lisp_symbol 1074,37197 +#define XSETINT(1079,37279 +#define XSETFASTINT(1080,37325 +#define XSETCONS(1081,37375 +#define XSETVECTOR(1082,37435 +#define XSETSTRING(1083,37503 +#define XSETSYMBOL(1084,37567 +#define XSETFLOAT(1085,37621 +#define XSETMISC(1086,37683 +#define XSETPVECTYPE(1090,37772 +#define XSETPVECTYPESIZE(1092,37888 +#define XSETPSEUDOVECTOR(1099,38185 +#define XSETTYPED_PSEUDOVECTOR(1105,38369 +#define XSETWINDOW_CONFIGURATION(1110,38579 +#define XSETPROCESS(1112,38675 +#define XSETWINDOW(1113,38741 +#define XSETTERMINAL(1114,38805 +#define XSETSUBR(1115,38873 +#define XSETCOMPILED(1116,38933 +#define XSETBUFFER(1117,39001 +#define XSETCHAR_TABLE(1118,39065 +#define XSETBOOL_VECTOR(1119,39137 +#define XSETSUB_CHAR_TABLE(1120,39211 +XINTPTR 1128,39581 +make_pointer_integer 1134,39661 +LISP_MACRO_DEFUN_VOID 1143,39826 +typedef struct interval *INTERVAL;INTERVAL1149,39987 +xcar_addr 1174,40760 +xcdr_addr 1179,40837 +LISP_MACRO_DEFUN 1185,40931 +XSETCDR 1198,41307 +CAR 1205,41457 +CDR 1212,41591 +CAR_SAFE 1221,41791 +CDR_SAFE 1226,41877 +STRING_MULTIBYTE 1243,42250 +#define STRING_BYTES_BOUND 1261,43057 +#define STRING_SET_UNIBYTE(1265,43201 +#define STRING_SET_MULTIBYTE(1275,43516 +SDATA 1286,43830 +SSDATA 1291,43908 +SREF 1297,44037 +SSET 1302,44128 +SCHARS 1307,44242 +STRING_BYTES 1316,44415 +SBYTES 1326,44595 +STRING_SET_CHARS 1331,44681 +struct vectorlike_header1343,45232 +struct Lisp_Vector1369,46482 + ALIGNOF_STRUCT_LISP_VECTOR1378,46681 +struct Lisp_Bool_Vector1384,46864 +bool_vector_size 1399,47385 +bool_vector_data 1407,47523 +bool_vector_uchar_data 1413,47617 +bool_vector_words 1421,47803 +bool_vector_bytes 1428,47998 +bool_vector_bitref 1437,48238 +bool_vector_ref 1445,48478 +bool_vector_set 1453,48618 + header_size 1471,49047 + bool_header_size 1472,49106 + word_size 1473,49171 +AREF 1479,49284 +aref_addr 1485,49391 +ASIZE 1491,49501 +ASET 1497,49583 +gc_aset 1504,49742 +enum { NIL_IS_ZERO 1515,50269 +memclear 1520,50464 +#define VECSIZE(1531,50762 +#define PSEUDOVECSIZE(1538,51047 +#define UNSIGNED_CMP(1546,51480 +#define ASCII_CHAR_P(1552,51734 +enum CHARTAB_SIZE_BITS1565,52489 + CHARTAB_SIZE_BITS_0 1567,52516 + CHARTAB_SIZE_BITS_1 1568,52545 + CHARTAB_SIZE_BITS_2 1569,52574 + CHARTAB_SIZE_BITS_3 1570,52603 +struct Lisp_Char_Table1575,52672 +struct Lisp_Sub_Char_Table1606,53752 +CHAR_TABLE_REF_ASCII 1628,54566 +CHAR_TABLE_REF 1648,55113 +CHAR_TABLE_SET 1658,55402 +struct Lisp_Subr1670,55786 +enum char_table_specials1692,56798 + CHAR_TABLE_STANDARD_SLOTS 1697,56993 + SUB_CHAR_TABLE_OFFSET 1701,57214 +CHAR_TABLE_EXTRA_SLOTS 1707,57377 +LISP_MACRO_DEFUN 1723,57921 +SYMBOL_BLV 1732,58181 +SYMBOL_FWD 1738,58316 +LISP_MACRO_DEFUN_VOID 1744,58428 +SET_SYMBOL_BLV 1754,58691 +SET_SYMBOL_FWD 1760,58850 +SYMBOL_NAME 1767,59001 +SYMBOL_INTERNED_P 1775,59130 +SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P 1783,59299 +#define DEFSYM(1796,59809 +LISP_MACRO_DEFUN DEFSYM1792,59630 +struct hash_table_test1805,60062 +struct Lisp_Hash_Table1823,60555 +XHASH_TABLE 1880,62531 +#define XSET_HASH_TABLE(1885,62602 +HASH_TABLE_P 1889,62703 +HASH_KEY 1896,62860 +HASH_VALUE 1903,63040 +HASH_NEXT 1911,63254 +HASH_HASH 1918,63431 +HASH_INDEX 1926,63677 +HASH_TABLE_SIZE 1933,63826 +enum DEFAULT_HASH_SIZE 1940,63956 +enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE 1940,63956 +static double const DEFAULT_REHASH_THRESHOLD 1946,64176 +static double const DEFAULT_REHASH_SIZE 1950,64299 +sxhash_combine 1956,64465 +SXHASH_REDUCE 1964,64648 +struct Lisp_Misc_Any 1971,64806 + ENUM_BF 1973,64866 +struct Lisp_Marker1978,64980 + ENUM_BF 1980,65001 +struct Lisp_Overlay2021,66841 + ENUM_BF 2034,67349 + SAVE_UNUSED,2047,67644 + SAVE_INTEGER,2048,67661 + SAVE_FUNCPOINTER,2049,67679 + SAVE_POINTER,2050,67701 + SAVE_OBJECT2051,67719 +enum { SAVE_SLOT_BITS 2055,67804 +enum { SAVE_VALUE_SLOTS 2058,67901 +enum { SAVE_TYPE_BITS 2062,68009 +enum Lisp_Save_Type2064,68075 + SAVE_TYPE_INT_INT 2066,68099 + SAVE_TYPE_INT_INT_INT2067,68172 + SAVE_TYPE_OBJ_OBJ 2069,68262 + SAVE_TYPE_OBJ_OBJ_OBJ 2070,68333 + SAVE_TYPE_OBJ_OBJ_OBJ_OBJ2071,68414 + SAVE_TYPE_PTR_INT 2073,68509 + SAVE_TYPE_PTR_OBJ 2074,68582 + SAVE_TYPE_PTR_PTR 2075,68654 + SAVE_TYPE_FUNCPTR_PTR_OBJ2076,68727 + SAVE_TYPE_MEMORY 2080,68885 +typedef void (*voidfuncptr)voidfuncptr2108,69839 +struct Lisp_Save_Value2110,69876 + ENUM_BF 2112,69903 +save_type 2134,70755 +XSAVE_POINTER 2143,70985 +set_save_pointer 2149,71147 +XSAVE_FUNCPOINTER 2155,71329 +XSAVE_INTEGER 2164,71549 +set_save_integer 2170,71711 +XSAVE_OBJECT 2179,71932 +struct Lisp_Finalizer2186,72109 +struct Lisp_Free2201,72584 + ENUM_BF 2203,72605 +union Lisp_Misc2212,72885 +XMISC 2223,73184 +XMISCANY 2229,73273 +XMISCTYPE 2236,73382 +XMARKER 2242,73470 +XOVERLAY 2249,73585 +XSAVE_VALUE 2256,73706 +XFINALIZER 2263,73835 +struct Lisp_Intfwd2274,74120 +struct Lisp_Boolfwd2284,74414 +struct Lisp_Objfwd2294,74705 +struct Lisp_Buffer_Objfwd2302,74937 +struct Lisp_Buffer_Local_Value2334,76473 +struct Lisp_Kboard_Objfwd2362,77732 +union Lisp_Fwd2368,77841 +XFWDTYPE 2378,78087 +XBUFFER_OBJFWD 2384,78183 +struct Lisp_Float2391,78319 +XFLOAT_DATA 2401,78437 + IEEE_FLOATING_POINT2415,78946 +#define _UCHAR_T2423,79269 +typedef unsigned char UCHAR;2424,79286 +enum Lisp_Compiled2429,79369 + COMPILED_ARGLIST 2431,79392 + COMPILED_BYTECODE 2432,79418 + COMPILED_CONSTANTS 2433,79445 + COMPILED_STACK_DEPTH 2434,79473 + COMPILED_DOC_STRING 2435,79503 + COMPILED_INTERACTIVE 2436,79532 +enum char_bits2443,79834 + CHAR_ALT 2445,79853 + CHAR_SUPER 2446,79879 + CHAR_HYPER 2447,79907 + CHAR_SHIFT 2448,79935 + CHAR_CTL 2449,79963 + CHAR_META 2450,79989 + CHAR_MODIFIER_MASK 2452,80017 + CHARACTERBITS 2457,80212 +LISP_MACRO_DEFUN 2462,80270 +NATNUMP 2470,80412 +RANGED_INTEGERP 2476,80493 +#define TYPE_RANGED_INTEGERP(2481,80615 +LISP_MACRO_DEFUN 2486,80800 +VECTORP 2500,81273 +OVERLAYP 2505,81376 +SAVE_VALUEP 2510,81475 +FINALIZERP 2516,81581 +AUTOLOADP 2522,81685 +BUFFER_OBJFWDP 2528,81776 +PSEUDOVECTOR_TYPEP 2534,81874 +PSEUDOVECTORP 2542,82127 +WINDOW_CONFIGURATIONP 2558,82479 +PROCESSP 2564,82589 +WINDOWP 2570,82673 +TERMINALP 2576,82755 +SUBRP 2582,82841 +COMPILEDP 2588,82919 +BUFFERP 2594,83005 +CHAR_TABLE_P 2600,83087 +SUB_CHAR_TABLE_P 2606,83178 +BOOL_VECTOR_P 2612,83277 +FRAMEP 2618,83370 +IMAGEP 2625,83487 +ARRAYP 2632,83592 +CHECK_LIST 2638,83711 +LISP_MACRO_DEFUN_VOID 2643,83792 +CHECK_STRING_CAR 2653,84089 +CHECK_CONS 2658,84193 +CHECK_VECTOR 2663,84273 +CHECK_BOOL_VECTOR 2668,84359 +CHECK_VECTOR_OR_STRING 2674,84536 +CHECK_ARRAY 2683,84710 +CHECK_BUFFER 2688,84818 +CHECK_WINDOW 2693,84904 +CHECK_PROCESS 2699,85010 +CHECK_NATNUM 2705,85106 +#define CHECK_RANGED_INTEGER(2710,85183 +#define CHECK_TYPE_RANGED_INTEGER(2721,85566 +#define CHECK_NUMBER_COERCE_MARKER(2729,85836 +XFLOATINT 2738,86089 +CHECK_NUMBER_OR_FLOAT 2744,86160 +#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(2749,86259 +CHECK_NUMBER_CAR 2760,86669 +CHECK_NUMBER_CDR 2768,86791 +#define DEFUN(2803,88386 +#define DEFUN(2812,88854 +FUNCTIONP 2822,89209 +enum maxargs2831,89404 + MANY 2833,89421 + UNEVALLED 2834,89436 +#define CALLMANY(2838,89539 +#define CALLN(2844,89892 +#define DEFVAR_LISP(2869,91097 +#define DEFVAR_LISP_NOPRO(2874,91269 +#define DEFVAR_BOOL(2879,91451 +#define DEFVAR_INT(2884,91624 +#define DEFVAR_BUFFER_DEFAULTS(2890,91795 +#define DEFVAR_KBOARD(2896,91999 +typedef jmp_buf sys_jmp_buf;2906,92323 +# define sys_setjmp(2907,92352 +# define sys_longjmp(2908,92387 +typedef sigjmp_buf sys_jmp_buf;2910,92459 +# define sys_setjmp(2911,92491 +# define sys_longjmp(2912,92531 +typedef jmp_buf sys_jmp_buf;2916,92690 +# define sys_setjmp(2917,92719 +# define sys_longjmp(2918,92753 +enum specbind_tag 2943,93805 + SPECPDL_UNWIND,2944,93825 + SPECPDL_UNWIND_PTR,2945,93894 + SPECPDL_UNWIND_INT,2946,93945 + SPECPDL_UNWIND_VOID,2947,93993 + SPECPDL_BACKTRACE,2948,94047 + SPECPDL_LET,2949,94105 + SPECPDL_LET_LOCAL,2951,94235 + SPECPDL_LET_DEFAULT 2952,94292 +union specbinding2955,94364 + ENUM_BF 2957,94386 + ENUM_BF 2959,94443 + ENUM_BF 2964,94573 + ENUM_BF 2969,94696 + ENUM_BF 2974,94814 + ENUM_BF 2978,94919 + ENUM_BF 2983,95094 +enum handlertype 3021,96410 +enum handlertype { CATCHER,3021,96410 +enum handlertype { CATCHER, CONDITION_CASE 3021,96410 +struct handler3023,96457 +#define PUSH_HANDLER(3053,97446 +#define QUIT 3101,99223 +#define QUITP 3112,99473 +struct gcpro3132,100316 +#define GC_USE_GCPROS_AS_BEFORE 3171,101297 +#define GC_MAKE_GCPROS_NOOPS 3172,101332 +#define GC_MARK_STACK_CHECK_GCPROS 3173,101364 +#define GC_USE_GCPROS_CHECK_ZOMBIES 3174,101401 +#define GC_MARK_STACK 3177,101462 +#define BYTE_MARK_STACK 3181,101562 +#define GCPRO1(3190,101833 +#define GCPRO2(3191,101873 +#define GCPRO3(3192,101939 +#define GCPRO4(3194,102034 +#define GCPRO5(3196,102154 +#define GCPRO6(3198,102299 +#define GCPRO7(3201,102474 +#define UNGCPRO 3202,102553 +#define GCPRO1(3208,102653 +#define GCPRO2(3212,102775 +#define GCPRO3(3217,102967 +#define GCPRO4(3223,103229 +#define GCPRO5(3230,103560 +#define GCPRO6(3238,103961 +#define GCPRO7(3247,104431 +#define UNGCPRO 3257,104971 +#define GCPRO1(3263,105065 +#define GCPRO2(3269,105299 +#define GCPRO3(3278,105717 +#define GCPRO4(3289,106274 +#define GCPRO5(3302,106972 +#define GCPRO6(3317,107812 +#define GCPRO7(3334,108793 +#define UNGCPRO 3353,109916 +#define RETURN_UNGCPRO(3363,110183 +vcopy 3384,110657 +set_hash_key_slot 3393,110932 +set_hash_value_slot 3399,111071 +set_symbol_function 3408,111306 +set_symbol_plist 3414,111421 +set_symbol_next 3420,111524 +blv_found 3428,111697 +set_overlay_plist 3437,111880 +string_intervals 3445,112031 +set_string_intervals 3453,112153 +set_char_table_defalt 3462,112355 +set_char_table_purpose 3467,112467 +set_char_table_extras 3475,112636 +set_char_table_contents 3482,112845 +set_sub_char_table_contents 3489,113040 +enum Arith_Comparison 3497,113303 + ARITH_EQUAL,3498,113327 + ARITH_NOTEQUAL,3499,113342 + ARITH_LESS,3500,113360 + ARITH_GRTR,3501,113374 + ARITH_LESS_OR_EQUAL,3502,113388 + ARITH_GRTR_OR_EQUAL3503,113411 +#define INTEGER_TO_CONS(3511,113762 +#define CONS_TO_INTEGER(3529,114625 +enum { NEXT_ALMOST_PRIME_LIMIT 3573,116329 +extern EMACS_INT next_almost_prime 3574,116368 +enum constype 3739,123820 +enum constype {CONSTYPE_HEAP,CONSTYPE_HEAP3739,123820 +enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}CONSTYPE_PURE3739,123820 +list2i 3745,124010 +list3i 3751,124119 +list4i 3757,124258 +extern Lisp_Object make_formatted_string 3767,124634 +build_pure_c_string 3792,125662 +build_string 3801,125867 +make_uninit_vector 3820,126438 +make_uninit_sub_char_table 3833,126657 +#define ALLOCATE_PSEUDOVECTOR(3850,127201 +#define ALLOCATE_ZEROED_PSEUDOVECTOR(3858,127537 +INLINE void 3890,128943 +extern void *r_alloc r_alloc3895,129064 +#define FLOAT_TO_STRING_BUFSIZE 3927,130527 +intern 3968,132134 +intern_c_string 3974,132222 +extern _Noreturn void error 4034,135601 +fast_string_match_ignore_case 4136,140089 +INLINE void fixup_locale 4241,143854 +INLINE void synchronize_system_messages_locale 4242,143889 +INLINE void synchronize_system_time_locale 4243,143946 +#define IS_DAEMON 4257,144419 +#define DAEMON_RUNNING 4258,144459 +#define IS_DAEMON 4261,144558 +#define DAEMON_RUNNING 4262,144603 +# define WAIT_READING_MAX 4281,145422 +# define WAIT_READING_MAX 4283,145494 +extern _Noreturn void emacs_abort 4374,148386 +egetenv 4532,152809 +#define eabs(4545,153305 +#define make_fixnum_or_float(4550,153438 +enum MAX_ALLOCA 4556,153689 +enum MAX_ALLOCA { MAX_ALLOCA 4556,153689 +extern void *record_xmalloc record_xmalloc4558,153734 +#define USE_SAFE_ALLOCA 4560,153800 +#define AVAIL_ALLOCA(4564,153933 +#define SAFE_ALLOCA(4568,154044 +#define SAFE_NALLOCA(4576,154385 +#define SAFE_ALLOCA_STRING(4590,154861 +#define SAFE_FREE(4598,155113 +#define SAFE_ALLOCA_LISP(4625,155691 +# define USE_STACK_LISP_OBJECTS 4652,156813 +# undef USE_STACK_LISP_OBJECTS4658,156979 +# define USE_STACK_LISP_OBJECTS 4659,157010 +enum { defined_GC_CHECK_STRING_BYTES 4663,157085 +enum { defined_GC_CHECK_STRING_BYTES 4665,157138 +union Aligned_Cons4670,157272 +union Aligned_String4676,157352 + USE_STACK_CONS 4689,157707 + USE_STACK_STRING 4691,157813 +#define STACK_CONS(4699,158150 +#define AUTO_CONS_EXPR(4701,158247 +#define AUTO_CONS(4709,158610 +#define AUTO_LIST1(4710,158681 +#define AUTO_LIST2(4712,158789 +#define AUTO_LIST3(4716,158944 +#define AUTO_LIST4(4720,159119 +# define verify_ascii(4732,159510 +#define AUTO_STRING(4740,159818 +#define FOR_EACH_TAIL(4752,160282 +#define FOR_EACH_ALIST_VALUE(4766,160773 +maybe_gc 4774,161060 +functionp 4784,161299 + +c-src/machsyscalls.c,23 +#define SYSCALL(6,113 + +c-src/machsyscalls.h,159 +SYSCALL (mach_msg_trap,1,0 +SYSCALL (mach_reply_port,13,314 +SYSCALL (mach_thread_self,18,377 +SYSCALL (mach_task_self,23,441 +SYSCALL (mach_host_self,28,503 + +c-src/h.h,1850 + ELEM_I/ELEM_I3,15 +} Fails_t;5,85 +typedef void Lang_function 6,96 +typedef struct tpcmd8,147 +#define ggg 10,170 +tpcmd;15,209 +typedef struct foobar2_ 16,216 +} foobar2;20,307 + DEVICE_SWP,23,333 + DEVICE_LAST24,349 +} bsp_DevId;25,365 + struct constant_args 27,394 +} args;30,457 +typedef int *regset;regset31,465 +typedef int INT;32,486 +typedef union abc33,503 +} ghi1;36,534 +typedef union abc 37,542 +} ghi2;39,573 +typedef struct a 40,581 +} b;41,600 +#define c(42,605 +typedef struct an_extern_linkage *an_extern_linkage_ptr;an_extern_linkage_ptr43,619 +typedef struct an_extern_linkage 44,676 +} an_extern_linkage;56,1054 +typedef struct pollfd pfdset[pfdset57,1075 +typedef union rtunion_def58,1119 + } womboid 63,1206 +typedef union rtunion_def64,1220 +womboid75,1330 +enum {dog,dog81,1416 +enum {dog, cat}cat81,1416 +enum {dog, cat} animals;81,1416 +typedef void (_CALLBACK_ *signal_handler)signal_handler82,1441 +typedef void (_CALLBACK_ *signal_handler1)signal_handler183,1489 +/* comment */ #define ANSIC84,1538 + #define ANSIC85,1566 +typedef void (proc)87,1588 +typedef void OperatorFun(88,1612 +typedef int f(89,1648 +struct my_struct 91,1691 +typedef struct my_struct my_typedef;93,1713 +typedef RETSIGTYPE (*signal_handler_t)signal_handler_t94,1750 + Date 04 May 87 235311 PDT 96,1802 +typedef unsigned char unchar;99,1880 +typedef int X,100,1910 +typedef int X, Y,100,1910 +typedef int X, Y, Z;100,1910 +typedef mio mao;101,1931 +typedef struct a 103,1966 +typedef struct a { } b;103,1966 +typedef struct b104,1990 +} c;106,2009 +int extvar;109,2053 +#define tag1110,2065 +#define aaaaaa 111,2078 +#define bbbbbb\bbbbbb113,2102 +#define cccccccccc115,2125 +#define enter_critical_section 116,2144 +#define exit_critical_to_previous 117,2199 +#define UNDEFINED118,2259 +struct re_pattern_buffer 119,2277 + +cp-src/c.C,2094 +template * f(48,1556 +int f(49,1571 +int A::f(f50,1590 +A > A,int>::f(f51,1618 +template class AT 52,1668 +class AU 53,1716 +class B<B54,1735 +class B { void f(54,1735 +const A::B::T& abt 55,1766 +class A 56,1792 +class A { class B 56,1792 +class A 57,1827 + A operator+(59,1861 +is_muldiv_operation(61,1888 +domain foo 68,1956 + void f(69,1969 +void A::A(A72,1990 +struct A 73,2005 +struct B 74,2023 +void B::B(B75,2042 +void BE_Node::BE_Node(BE_Node76,2057 +class BE_Node 77,2084 +struct foo 79,2103 +class test 86,2157 + int f(87,2170 + int ff(89,2232 + int g(90,2255 +class AST_Root 92,2279 +AST_ConcreteType::AST_ConcreteType(99,2394 +AST_Array::AST_Array(107,2533 + void f(115,2734 +struct A 117,2754 +A::~A(~A120,2778 +struct B 122,2790 + ~B(123,2801 +enum {dog,dog126,2818 +enum {dog, cat}cat126,2818 +enum {dog, cat} animals;126,2818 +struct {int teats;} cow;127,2843 +class Boo 129,2869 + enum {dog,dog130,2881 + enum {dog, cat}cat130,2881 + foo(133,2955 + Boo(137,2996 +Boo::Boo(141,3071 +typedef int should_see_this_one_enclosed_in_extern_C;149,3156 +typedef int (*should_see_this_function_pointer)should_see_this_function_pointer153,3229 +typedef int should_see_this_array_type[should_see_this_array_type156,3311 + +cp-src/x.cc,63 +class XX1,0 +XX::foo(foo9,60 +XX::bar(bar15,95 +main(21,126 + +cp-src/burton.cpp,124 +::dummy::dummy test::dummy1(dummy11,0 +::dummy::dummy test::dummy2(dummy26,64 +::dummy::dummy test::dummy3(dummy311,143 + +cp-src/functions.cpp,778 +void Date::setDate setDate5,148 +void Date::plus plus32,939 +void Date::minus minus42,1229 +void Date::shift shift52,1407 +Date & Date::operator = operator =62,1628 +Date & Date::operator += operator +=69,1789 +Date & Date::operator -= operator -=78,1939 +Date & Date::operator ++ operator ++87,2080 +Date & Date::operator -- operator --96,2216 +int Date::operator - operator -104,2331 +int Date::operator < operator <112,2483 +int Date::operator > operator >116,2557 +int Date::operator == operator ==120,2631 +ostream& operator << operator <<124,2707 +istream& operator >> operator >>133,2943 +bool isLeap 159,3543 +bool isHoliday 163,3629 +void asort(173,3865 +void ReadVacation 186,4064 +void Debug 201,4523 +int WorkingDays(211,4867 +Date StartDay(226,5129 + +cp-src/MDiagArray2.h,482 +#define octave_MDiagArray2_h 29,870 +#undef LTGT35,967 +#define LTGT39,1031 +#define LTGT 42,1051 +class MDiagArray2 78,2022 + MDiagArray2 82,2077 + MDiagArray2 86,2154 + MDiagArray2 87,2198 + MDiagArray2 88,2254 + MDiagArray2 89,2329 + MDiagArray2 90,2387 + MDiagArray2 91,2450 + ~MDiagArray2 93,2515 + MDiagArray2& operator = operator =95,2542 + operator MArray2 operator MArray2101,2667 +#undef LTGT144,3874 +#define INSTANTIATE_MDIAGARRAY_FRIENDS(146,3887 + +cp-src/Range.h,275 +#define octave_Range_h 24,765 +Range35,891 + Range 39,909 + Range 42,995 + Range 46,1130 + Range 50,1248 + double base 54,1376 + double limit 55,1425 + double inc 56,1475 + int nelem 57,1523 + void set_base 68,1728 + void set_limit 69,1774 + void set_inc 70,1821 + +cp-src/screen.cpp,228 +unsigned char cursor_x,15,548 +unsigned char cursor_x, cursor_y;15,548 +static union REGS regs;16,582 +void goto_xy(18,607 +void hide_cursor(27,774 +void cursor_position(32,836 +void clear_screen(41,997 +void write_xyc(55,1247 + +cp-src/screen.hpp,414 +#define __COLORS9,401 +enum COLORS 11,419 + BLACK,12,433 + BLUE,13,471 + GREEN,14,481 + CYAN,15,492 + RED,16,502 + MAGENTA,17,511 + BROWN,18,524 + LIGHTGRAY,19,535 + DARKGRAY,20,550 + LIGHTBLUE,21,589 + LIGHTGREEN,22,604 + LIGHTCYAN,23,620 + LIGHTRED,24,635 + LIGHTMAGENTA,25,649 + YELLOW,26,667 + WHITE27,679 +#define SCREEN_FP(31,700 +#define SCREEN_START 33,795 + +cp-src/conway.cpp,288 +#define max(12,357 +#define min(13,393 +const int num_rows 15,430 +const int num_columns 16,470 +class site *field_of_play[field_of_play18,499 +int site::total_surrounding(total_surrounding20,550 +void display(37,958 +void glider(50,1239 +void traffic_light(59,1478 +void main(67,1633 + +cp-src/conway.hpp,164 +class site:site5,235 + site(10,344 + char read(12,410 + void set(13,444 + void clear(14,478 + void compute_next_state(15,514 + void step(22,717 + +cp-src/clheir.cpp,359 +const int max_num_generic_objects 9,298 +generic_object * object_registry[object_registry10,340 +void init_registry(12,400 +void step_everybody(19,527 +void discrete_location::clear_neighbors(clear_neighbors31,852 +generic_object::generic_object(generic_object36,981 +generic_object::~generic_object(~generic_object48,1255 +void agent::move(move53,1353 + +cp-src/clheir.hpp,423 +class generic_object13,520 + virtual void compute_next_state(21,843 + virtual void step(22,889 +const int max_num_directions 31,1220 +class location:location33,1290 + location(43,1643 +class irregular_location:irregular_location47,1687 + irregular_location(51,1763 +class discrete_location:discrete_location56,1890 + discrete_location(62,2045 + void assign_neighbor(66,2185 +class agent:agent75,2509 + +cp-src/fail.C,294 +struct A 7,263 + struct B 8,274 + struct C 9,289 + C(11,318 + operator int(operator int12,342 + typedef C T;14,389 + typedef B T2;16,414 +class A 23,453 + class B 24,463 + class C 25,474 + int f(26,488 +int A::B::f(f31,521 +main(37,571 + class D 41,622 + D(43,659 + +el-src/TAGTEST.EL,148 +(foo::defmumble bletch 1,0 +(defalias 'pending-delete-mode pending-delete-mode5,102 +(defalias (quote explicitly-quoted-pending-delete-mode)8,175 + +el-src/emacs/lisp/progmodes/etags.el,5069 +(defvar tags-file-name 34,1034 +(defgroup etags 43,1498 +(defcustom tags-case-fold-search 47,1566 +(defcustom tags-table-list 59,2051 +(defcustom tags-compression-info-list69,2449 +(defcustom tags-add-tables 88,3231 +(defcustom tags-revert-without-query 98,3627 +(defvar tags-table-computed-list 103,3778 +(defvar tags-table-computed-list-for 112,4262 +(defvar tags-table-list-pointer 117,4510 +(defvar tags-table-list-started-at 121,4701 +(defvar tags-table-set-list 124,4821 +(defcustom find-tag-hook 129,5000 +(defcustom find-tag-default-function 137,5263 +(define-obsolete-variable-alias 'find-tag-marker-ring-lengthfind-tag-marker-ring-length145,5602 +(defcustom tags-tag-face 148,5699 +(defcustom tags-apropos-verbose 154,5834 +(defcustom tags-apropos-additional-actions 160,5998 +(defvaralias 'find-tag-marker-ring find-tag-marker-ring183,6917 +(defvar default-tags-table-function 189,7097 +(defvar tags-location-ring 194,7323 +(defvar tags-table-files 201,7599 +(defvar tags-completion-table 206,7766 +(defvar tags-included-tables 209,7858 +(defvar next-file-list 212,7953 +(defvar tags-table-format-functions 217,8059 +(defvar file-of-tag-function 224,8440 +(defvar tags-table-files-function 228,8634 +(defvar tags-completion-table-function 230,8745 +(defvar snarf-tag-function 232,8840 +(defvar goto-tag-location-function 236,9049 +(defvar find-tag-regexp-search-function 239,9222 +(defvar find-tag-regexp-tag-order 241,9343 +(defvar find-tag-regexp-next-line-after-failure-p 243,9452 +(defvar find-tag-search-function 245,9572 +(defvar find-tag-tag-order 247,9679 +(defvar find-tag-next-line-after-failure-p 249,9774 +(defvar list-tags-function 251,9880 +(defvar tags-apropos-function 253,9968 +(defvar tags-included-tables-function 255,10062 +(defvar verify-tags-table-function 257,10181 +(defun initialize-new-tags-table 260,10292 +(defun tags-table-mode 276,10980 +(defun visit-tags-table 285,11245 +(defun tags-table-check-computed-list 321,12783 +(defun tags-table-extend-computed-list 360,14654 +(defun tags-expand-table-name 400,16367 +(defun tags-table-list-member 409,16710 +(defun tags-verify-table 421,17182 +(defun tags-table-including 470,19302 +(defun tags-next-table 522,21346 +(defun visit-tags-table-buffer 543,22203 +(defun tags-reset-tags-tables 712,28513 +(defun file-of-tag 731,29170 +(defun tags-table-files 740,29519 +(defun tags-included-tables 749,29869 +(defun tags-completion-table 755,30115 +(defun tags-lazy-completion-table 783,31309 +(defun tags-completion-at-point-function 799,31944 +(defun find-tag-tag 818,32694 +(defvar last-tag 837,33367 +(defun find-tag-interactive 840,33426 +(defvar find-tag-history 852,33841 +(defun find-tag-noselect 860,34011 +(defun find-tag 932,37125 +(defun find-tag-other-window 959,38341 +(defun find-tag-other-frame 1000,40269 +(defun find-tag-regexp 1025,41443 +(defalias 'pop-tag-mark pop-tag-mark1049,42605 +(defvar tag-lines-already-matched 1052,42656 +(defun find-tag-in-order 1055,42763 +(defun tag-find-file-of-tag-noselect 1167,47109 +(defun tag-find-file-of-tag 1200,48955 +(defun etags-recognize-tags-table 1208,49181 +(defun etags-verify-tags-table 1241,50812 +(defun etags-file-of-tag 1246,51010 +(defun etags-tags-completion-table 1256,51345 +(defun etags-snarf-tag 1286,52551 +(defun etags-goto-tag-location 1324,54120 +(defun etags-list-tags 1388,56563 +(defmacro tags-with-face 1423,57838 +(defun etags-tags-apropos-additional 1431,58171 +(defun etags-tags-apropos 1465,59408 +(defun etags-tags-table-files 1527,61617 +(defun etags-tags-included-tables 1542,62053 +(defun tags-recognize-empty-tags-table 1559,62593 +(defun tag-exact-file-name-match-p 1587,63739 +(defun tag-file-name-match-p 1596,64132 +(defun tag-exact-match-p 1609,64688 +(defun tag-implicit-name-match-p 1620,65256 +(defun tag-symbol-match-p 1633,65856 +(defun tag-word-match-p 1643,66292 +(defun tag-partial-file-name-match-p 1652,66690 +(defun tag-any-match-p 1662,67134 +(defun tag-re-match-p 1667,67318 +(defcustom tags-loop-revert-buffers 1675,67567 +(defun next-file 1685,67976 +(defvar tags-loop-operate 1760,70890 +(defvar tags-loop-scan1763,70984 +(defun tags-loop-eval 1771,71313 +(defun tags-loop-continue 1782,71642 +(defun tags-search 1850,73948 +(defun tags-query-replace 1871,74774 +(defun tags-complete-tags-table-file 1896,75998 +(defun list-tags 1906,76377 +(defun tags-apropos 1934,77330 +(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78156 +(defun select-tags-table 1964,78395 +(defvar select-tags-table-mode-map 2019,80522 +(define-derived-mode select-tags-table-mode 2030,80905 +(defun select-tags-table-select 2034,81089 +(defun select-tags-table-quit 2043,81455 +(defun complete-tag 2049,81610 +(defconst etags--xref-limit 2074,82551 +(defvar etags-xref-find-definitions-tag-order 2076,82586 +(defun etags-xref-find 2082,82876 +(defun etags--xref-find-definitions 2096,83405 +(defclass xref-etags-location 2129,85119 +(defun xref-make-etags-location 2135,85342 +(cl-defmethod xref-location-marker 2139,85497 +(cl-defmethod xref-location-line 2146,85741 + +erl-src/gs_dialog.erl,98 +-define(VERSION2,32 +behaviour_info(51,2177 +show(124,5458 +dialog_loop(219,9529 +test(252,10806 + +f-src/entry.for,172 + LOGICAL FUNCTION PRTPKG 3,75 + ENTRY SETPRT 194,3866 + ENTRY MSGSEL 395,8478 + & intensity1(577,12231 + character*(*) function foo(579,12307 + +f-src/entry.strange_suffix,172 + LOGICAL FUNCTION PRTPKG 3,75 + ENTRY SETPRT 194,3866 + ENTRY MSGSEL 395,8478 + & intensity1(577,12231 + character*(*) function foo(579,12307 + +f-src/entry.strange,172 + LOGICAL FUNCTION PRTPKG 3,75 + ENTRY SETPRT 194,3866 + ENTRY MSGSEL 395,8478 + & intensity1(577,12231 + character*(*) function foo(579,12307 + +forth-src/test-forth.fth,408 +: a-forth-word 20,301 +99 constant a-forth-constant!22,343 +55 value a-forth-value?23,373 +create :a-forth-dictionary-entry24,397 +defer #a-defer-word27,460 +: (another-forth-word)(another-forth-word29,481 + 9 field >field136,582 + 5 field >field237,605 +constant (a-forth-constant(a-forth-constant38,628 +2000 buffer: #some-storage41,657 +code assemby-code-word 43,685 +: a-forth-word 50,870 + +go-src/test.go,48 +package main1,0 +func say(5,28 +func main(9,72 + +go-src/test1.go,119 +package main1,0 +func (s str) PrintAdd(17,136 +func (n intNumber) PrintAdd(21,189 +func test(25,248 +func main(29,285 + +html-src/softwarelibero.html,200 +Cos'è il software libero?4,38 +Licenze d'uso di un programmalicenze65,2500 +Sfatiamo alcuni miti138,6118 +Il movimento open sourceoss191,8037 +Impatto pratico del software liberoimpatto231,10066 + +html-src/index.shtml,104 + 8,281 +In evidenza15,447 +Comunicati e iniziative32,976 +Ultime notizie dall'associazione63,2030 + +html-src/algrthms.html,467 +Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms7,277 +Descriptionalgorithms10,481 +Generating the Datagenalgorithm48,1995 +Convolutionallyconalgorithm55,2512 +Nextstatetable262,11587 +Outputoutputtable350,13915 +Mapping the Channel Symbolsmapping433,16213 +Adding Noise to theaddnoise439,16607 +Quantizing the Receivedquantizing469,19100 + +html-src/software.html,439 +Francesco Potortì Software Page9,280 +Software that I wrote for supporting my research activitysimulation36,1398 +MTGmtg41,1482 +Fracasfracas65,2624 +GaliLEOgalileo101,4232 +Leasqrleasqr114,4677 +Free software that I wrote for the GNU project or for my personal or workgnu142,6065 +Etagsetags148,6180 +checkiso161,6729 +cgrep178,7547 +debian-bug.eldebian-bug190,7979 +tcpdump205,8564 +Links to interesting softwarelinks216,8891 + +lua-src/allegro.lua,400 +local function get_layer_by_name 7,175 +local function count_layers 33,621 +function GetLayerByName 54,980 +function GetUniqueLayerName 65,1204 +function SelectLayer 76,1415 +function NewLayer 86,1773 +function NewLayerSet 144,3226 +function RemoveLayer 170,3750 +function MoveLayerTop 211,4767 +function MoveLayerBottom 223,5079 +function MoveLayerBefore 236,5457 +function MoveLayerAfter 258,6090 + +lua-src/test.lua,442 +function Rectangle.getPos 2,15 +function Rectangle.getPos getPos2,15 +function Circle.getPos 6,61 +function Circle.getPos getPos6,61 +function Cube.data.getFoo 10,102 +function Cube.data.getFoo getFoo10,102 +function Square.something:Bar 14,148 +function Square.something:Bar Bar14,148 + function test.me_22a(22,241 + function test.me_22a(me_22a22,241 + local function test.me22b 25,297 + local function test.me22b me22b25,297 + +make-src/Makefile,2175 +LATEST=1,0 +RELEASELIST=2,10 +ADASRC=4,104 +ASRC=5,171 +CSRC=6,197 +CPSRC=10,423 +ELSRC=13,614 +ERLSRC=14,661 +FORTHSRC=15,702 +FSRC=16,726 +HTMLSRC=17,776 +JAVASRC=18,844 +LUASRC=19,907 +MAKESRC=20,926 +OBJCSRC=21,943 +OBJCPPSRC=22,999 +PASSRC=23,1035 +PERLSRC=24,1053 +PHPSRC=25,1108 +PSSRC=26,1156 +PROLSRC=27,1173 +PYTSRC=28,1210 +TEXSRC=29,1227 +YSRC=30,1282 +SRCS=31,1325 +NONSRCS=35,1577 +VHDLFLAGS=37,1624 +COBOLFLAGS=38,1827 +POSTSCRIPTFLAGS=39,1889 +TCLFLAGS=40,1943 +GETOPTOBJS=42,2002 +RXINCLUDE=43,2034 +REGEXOBJS=44,2056 +CHECKOBJS=46,2075 +CHECKFLAGS=47,2105 +OBJS=48,2145 +CPPFLAGS=49,2190 +LDFLAGS=50,2259 +WARNINGS=51,2282 +CFLAGS=52,2466 +FASTCFLAGS=55,2530 +FASTCFLAGSWARN=56,2591 +FILTER=58,2641 +REGEX=59,2695 +xx=60,2741 +MAKE:MAKE62,2790 +RUN=63,2825 +RUN=64,2865 +OPTIONS=65,2870 +ARGS=66,2922 +infiles 68,2940 +quiettest:quiettest70,3002 +test:test79,3409 +${CHECKOBJS}:${CHECKOBJS}88,3805 +checker:checker90,3849 +standalone:standalone96,4062 +prof:prof101,4168 +fastetags:fastetags104,4198 +fastctags:fastctags108,4322 +staticetags:staticetags112,4446 +rsynctofly:rsynctofly116,4608 +rsyncfromfly:rsyncfromfly119,4698 +web ftp publish:web ftp publish122,4794 +release distrib:release distrib129,5115 +tags:tags134,5255 +clean:clean136,5267 +srclist:srclist139,5302 +regexfile:regexfile143,5391 +/home/www/pub/etags.c.gz:/home/www/pub/etags.c.gz149,5566 +/home/www/pub/software/unix/etags.tar.gz:/home/www/pub/software/unix/etags.tar.gz156,5825 +regex.o:regex.o159,6031 +getopt.o:getopt.o162,6086 +getopt1.o:getopt1.o165,6147 +etags:etags168,6210 +ctags:ctags171,6299 +man manpage:man manpage174,6396 +etags.1.man:etags.1.man176,6422 +maintaining.info:maintaining.info179,6475 +TAGS:TAGS182,6557 +%ediff:%ediff185,6587 +oediff:oediff188,6677 +%cdiff:%cdiff191,6764 +xdiff:xdiff194,6854 +ETAGS:ETAGS197,6942 +ETAGS%:ETAGS%200,7012 +ETAGS13 ETAGS14 ETAGS15:ETAGS13 ETAGS14 ETAGS15203,7084 +ETAGS12:ETAGS12206,7216 +OTAGS:OTAGS209,7304 +CTAGS:CTAGS212,7369 +CTAGS%:CTAGS%215,7443 +CTAGS13 CTAGS14 CTAGS15:CTAGS13 CTAGS14 CTAGS15218,7545 +EXTAGS:EXTAGS221,7680 +.PRECIOUS:.PRECIOUS224,7838 +FRC:FRC226,7894 + +objc-src/Subprocess.h,98 +#define Subprocess 41,1217 +#define BUFFERSIZE 43,1267 +@interface Subprocess:Subprocess45,1292 + +objc-src/Subprocess.m,446 +#define PTY_TEMPLATE 20,494 +#define PTY_LENGTH 21,528 +@interface Subprocess(Private)32,737 +- childDidExit39,851 +- fdHandler:fdHandler67,1589 +showError 98,2360 +fdHandler 112,2785 +getptys 119,2907 +- init:init183,4815 + andStdErr:init197,5147 +- send:(const char *)string withNewline:send300,7436 +- send:send308,7599 +- terminateInput314,7689 +- terminate:terminate321,7810 +- setDelegate:setDelegate332,7961 +- delegate338,8031 + +objc-src/PackInsp.h,109 +#define NUMSTATS 36,1101 +#define TYPESTOSTAT 37,1120 +@interface PackageInspector:PackageInspector39,1172 + +objc-src/PackInsp.m,1322 +static const char RCSid[RCSid30,1032 +#define VERSION 34,1116 +# define DEBUG 37,1155 +#define LISTCONTENTS 39,1181 +#define OPENBUTTON 47,1352 +#define LISTCONTENTSBUTTON 48,1449 +#define LISTDESCRIPTIONBUTTON 49,1562 +#define STATE_UNINSTALLED 52,1687 +#define STATE_INSTALLED 53,1807 +#define STATE_COMPRESSD 54,1948 +#define SIZEFORMAT 57,2152 +#define KBYTES 58,2362 +#define MBYTES 59,2473 +#define LOCALIZE(61,2585 +#define LOCALIZE_ARCH(62,2668 ++newnew67,2802 +-showInfo:showInfo93,3417 +-revert:revert107,3737 +-ok:ok136,4297 +-loadload143,4424 +#define LOOKUP(156,4826 +#undef LOOKUP176,5694 +-loadKeyValuesFrom:(const char *)type inTable:loadKeyValuesFrom186,5852 +-loadContentsOf:(const char *)type inTable:loadContentsOf238,7079 +-loadImageloadImage257,7552 +#define STAT_EQ(275,7940 +-(BOOL)shouldLoad280,8116 +-toggleDescriptiontoggleDescription301,8626 +-(const char *)getPath:(char *)buf forType:getPath317,8899 +-setRevertButtonTitlesetRevertButtonTitle333,9320 +-(const char *)formatSize:(const char *)size inBuf:formatSize344,9525 +#define WORKING 368,10045 +-(void)getArchs370,10100 +-(void)addArchs:addArchs385,10520 +-subprocess:(Subprocess *)sender output:subprocess428,11351 +-subprocessDone:subprocessDone436,11484 +static void openInWorkspace(446,11634 +-open:open464,12063 + +objcpp-src/SimpleCalc.H,41 +@interface SimpleCalc:SimpleCalc14,400 + +objcpp-src/SimpleCalc.M,445 +- init52,1747 +- appendToDisplay:appendToDisplay60,1933 +- registerAction:registerAction70,2210 +- decimalKey:decimalKey77,2348 +- numberKeys:numberKeys91,2661 +- equalsKey:equalsKey112,3192 +- operationKeys:operationKeys131,3680 +- clearKey:clearKey153,4301 +- clearAllKey:clearAllKey160,4410 +- appDidInit:appDidInit168,4591 +- windowWillClose:windowWillClose178,4882 +- infoPanel:infoPanel186,5132 +- helpPanel:helpPanel198,5482 + +pas-src/common.pas,1875 +procedure InitializeStringPackage;26,527 +function newtextstring;34,874 +procedure disposetextstring;52,1404 +function ConcatT;78,2066 +function AppendTextString;112,3238 +function CopyTextString;132,3947 +procedure CONVERT_CHARSTRING_TO_VALUE;151,4505 +procedure append_string;172,5166 +function To_Upper;186,5462 +function To_Lower;194,5617 +function EmptyNmStr(209,6213 +function chartonmstr;219,6436 +function LowerCaseNmStr;230,6682 +function concatenatenamestrings;242,7007 +procedure writenamestring;263,7517 +function IsControlChar;277,7928 +function namestringequal;283,8079 +function NameStringLess;302,8539 +function IsControlCharName(343,9710 +function SubString;358,10208 +function SkipChars;379,10791 +function RemoveUnderlineControl;397,11311 +procedure First100Chars;427,12162 +procedure SkipSpaces;462,13298 +function SkipBlanks;477,13782 +function stripname;505,14595 +function Locate;522,15039 +function NameHasChar;543,15581 +function integertonmstr;561,16134 +function NmStrToInteger;585,16901 +function AddNullToNmStr;600,17317 +function ValToNmStr;611,17585 +function ChangeFileType;625,18037 +function StripPath;647,18734 +function ReprOfChar;675,19343 +procedure ExtractCommentInfo;702,20749 +procedure INSERT_TREE_NODE;784,24053 +function GetNameList;920,27926 +procedure DisposeANameList(925,28010 +procedure DisposeNameList;938,28340 +function GetNewNameListNode;943,28409 +function insertname;972,29051 +procedure InitNameList;988,29471 +procedure InitNameStringPool;998,29767 +procedure NewNameString;1004,29867 +procedure ReleaseNameString;1022,30232 +procedure SDTrefStringToRec 1045,30741 +procedure SDTrefSkipSpaces;1059,31092 +function SDTrefIsEnd 1070,31323 +function SDTrefGetInteger 1082,31529 +procedure SDTrefRecToString 1303,37546 +function NmStrToErrStr;1497,42305 +function ErrStrToNmStr;1509,42557 +function GetTextRef;1529,43112 + +php-src/lce_functions.php,2152 + define("LCE_FUNCTIONS"LCE_FUNCTIONS4,38 + define("LCE_UNKNOWN"LCE_UNKNOWN9,145 + define("LCE_WS"LCE_WS11,194 + define("LCE_COMMENT"LCE_COMMENT13,244 + define("LCE_COMMENT_USER"LCE_COMMENT_USER15,303 + define("LCE_COMMENT_TOOL"LCE_COMMENT_TOOL17,366 + define("LCE_MSGID"LCE_MSGID19,430 + define("LCE_MSGSTR"LCE_MSGSTR21,488 + define("LCE_TEXT"LCE_TEXT23,541 + define("STATE_ABORT"STATE_ABORT25,567 + define("STATE_OK"STATE_OK26,595 + define("STATE_LOOP"STATE_LOOP27,620 + class POEntryAD 29,648 + function validate(31,683 + function checkQuotation(59,1384 + class CommentAD 70,1639 + function CommentAD(73,1693 + function validate(83,1944 + class POEntry 105,2410 + function POEntry(119,2711 + function lineCount(135,3255 + function serializeToVars(141,3365 + function write(151,3800 + class POReader 163,4178 + function gettext(177,4457 + function parseFromVars(189,4705 + function serializeToVars(215,5331 + function POReader(229,5613 + function read(243,5983 + function write(259,6307 + function isComment(277,6645 + function comment(284,6822 + function msgid(304,7247 + function msgstr(320,7574 + function start(340,8232 + function createPOEntries(360,8644 + function stripLine(394,9472 + function printClassification(421,10056 + function classifyLine(432,10301 + function getTextDomains(471,11094 + class PORManager 498,11756 + function PORManager(502,11822 + function addPOReader(507,11896 + function &getPOReader(getPOReader512,11992 + function getDomainNames(517,12081 + function &loadPORManager(loadPORManager523,12174 + function fileJoin(536,12436 + function lce_bindtextdomain(557,12839 + function lce_textdomain(614,14530 + function lce_gettext(620,14641 + function lce_dgettext(626,14767 + function lce(634,14966 + function lce_bindtextdomain(651,15488 + function lce_textdomain(656,15592 + function lce_gettext(661,15674 + function lce_dgettext(666,15755 + function lce(670,15855 + function lce_geteditcode(676,15898 + +php-src/ptest.php,46 +define("TEST"TEST1,0 +test 4,26 +foo(16,200 + - perl-src/htlmify-cystic,1443 ++perl-src/htlmify-cystic,1197 +my @section_name;section_name12,236 +my @appendix_name;appendix_name13,254 +my @section_toc;section_toc15,274 +my @appendix_toc;appendix_toc16,291 +my $new_tag new_tag18,310 +my $appendix;appendix24,409 +my $section;section25,423 +my $subsection;subsection26,436 +my $subsubsection;subsubsection27,452 +my $this_file_toc this_file_toc29,472 +my %file_tocs;file_tocs30,496 +my @output_files output_files32,512 +my $file_index file_index33,535 +my $output_file;output_file35,556 +my $line;line37,574 +my $subsection_marker;subsection_marker161,3883 +my $new;new163,3907 - sub read_toc main::read_toc165,3917 ++sub read_toc 165,3917 + my $entry entry218,5621 + my $entry entry234,6077 + my $entry entry245,6351 + my $entry entry252,6536 + my $entry entry268,7010 + my $entry entry276,7204 + my $entry entry281,7328 + my $entry entry296,7698 - sub finish_subsubsections main::finish_subsubsections302,7805 - sub finish_subsections main::finish_subsections309,7987 - sub finish_sections main::finish_sections320,8310 - sub finish_appendices main::finish_appendices331,8599 - sub section_url_base main::section_url_base337,8724 - sub section_url_name main::section_url_name342,8922 - sub section_url main::section_url355,9284 ++sub finish_subsubsections 302,7805 ++sub finish_subsections 309,7987 ++sub finish_sections 320,8310 ++sub finish_appendices 331,8599 ++sub section_url_base 337,8724 ++sub section_url_name 342,8922 ++sub section_url 355,9284 + my $name name357,9336 - sub section_href main::section_href364,9452 - sub section_name main::section_name368,9551 - sub toc_line main::toc_line372,9655 - sub file_end main::file_end375,9750 ++sub section_href 364,9452 ++sub section_name 368,9551 ++sub toc_line 372,9655 ++sub file_end 375,9750 + - perl-src/yagrip.pl,258 - sub getopt main::getopt7,156 ++perl-src/yagrip.pl,233 ++sub getopt 7,156 + local($_,$flag,$opt,$f,$r,@temp)($_,$flag,$opt,$f,$r,@temp8,169 - sub usage main::usage38,856 ++sub usage 38,856 + local($prog,$_,@list)($prog,$_,@list39,868 + local($string,$flag,@string,@temp,@last)($string,$flag,@string,@temp,@last40,897 + - perl-src/kai-test.pl,244 - sub f1 main::f12,16 - sub main::f2 6,50 ++perl-src/kai-test.pl,203 ++sub f1 2,16 ++sub main::f2 f26,50 +package Foo;10,90 - sub f3 Foo::f312,104 - sub Bar::f4 16,138 ++sub f3 12,104 ++sub Bar::f4 f416,138 +package Bar;20,177 - sub f5 Bar::f522,191 ++sub f5 22,191 +package Foo::Bar;26,225 - sub f6 Foo::Bar::f628,244 ++sub f6 28,244 +package main;32,278 - sub f7 main::f734,293 ++sub f7 34,293 + +ps-src/rfc1245.ps,2478 +/FMversion 12,311 +/FrameDict 17,500 +/FMVERSION 47,1307 +/FMLOCAL 56,1494 +/FMDOCUMENT 73,1766 +/FMBEGINPAGE 95,2279 +/FMENDPAGE 109,2516 +/FMDEFINEFONT 115,2582 +/FMNORMALIZEGRAPHICS 126,2725 +/FMBEGINEPSF 142,2955 +/FMENDEPSF 153,3207 +/setmanualfeed 158,3283 +/max 163,3386 +/min 164,3426 +/inch 165,3466 +/pagedimen 166,3485 +/setpapername 172,3629 +/papersize 190,4214 +/manualpapersize 211,4789 +/desperatepapersize 230,5211 +/savematrix 239,5370 +/restorematrix 242,5425 +/dmatrix 245,5475 +/dpi 246,5495 +/freq 248,5583 +/sangle 249,5658 +/DiacriticEncoding 250,5717 +/.notdef 251,5738 +/.notdef 252,5801 +/.notdef 253,5864 +/.notdef 254,5927 +/.notdef 255,5990 +/numbersign 256,6051 +/parenright 257,6115 +/two 258,6184 +/less 259,6251 +/L 260,6320 +/bracketright 261,6389 +/i 262,6459 +/braceright 263,6529 +/Ntilde 264,6598 +/atilde 265,6668 +/iacute 266,6733 +/ocircumflex 267,6797 +/udieresis 268,6858 +/paragraph 269,6919 +/dieresis 270,6983 +/yen 271,7050 +/ordfeminine 272,7109 +/exclamdown 273,7171 +/guillemotleft 274,7230 +/Otilde 275,7296 +/quoteleft 276,7357 +/fraction 277,7420 +/periodcentered 278,7490 +/Acircumflex 279,7549 +/Icircumflex 280,7610 +/Uacute 281,7680 +/breve 282,7746 +/ReEncode 284,7814 +/graymode 300,8020 +/setpattern 310,8184 +/grayness 331,8725 +/normalize 394,9873 +/dnormalize 397,9942 +/lnormalize 400,10014 +/H 403,10104 +/Z 406,10147 +/X 409,10176 +/V 412,10219 +/N 415,10260 +/M 418,10286 +/E 419,10315 +/D 420,10336 +/O 421,10358 +/L 423,10394 +/Y 430,10489 +/R 439,10588 +/RR 450,10696 +/C 467,10959 +/U 473,11004 +/F 477,11039 +/T 481,11084 +/RF 484,11115 +/TF 488,11164 +/P 495,11219 +/PF 499,11270 +/S 506,11344 +/SF 510,11384 +/B 517,11446 +/BF 521,11505 +/W 538,11714 +/G 573,12382 +/A 582,12525 +/BEGINPRINTCODE 606,12918 +/ENDPRINTCODE 615,13131 +/gn 620,13259 +/cfs 631,13384 +/ic 636,13473 +/ms 658,14285 +/ip 668,14395 +/wh 678,14492 +/bl 684,14607 +/s1 690,14722 +/fl 691,14739 +/hx 698,14887 +/wbytes 709,15055 +/BEGINBITMAPBWc 713,15147 +/BEGINBITMAPGRAYc 716,15198 +/BEGINBITMAP2BITc 719,15251 +/COMMONBITMAPc 722,15304 +/BEGINBITMAPBW 739,15660 +/BEGINBITMAPGRAY 742,15709 +/BEGINBITMAP2BIT 745,15760 +/COMMONBITMAP 748,15811 +/Fmcc 765,16156 +/ngrayt 773,16371 +/nredt 774,16393 +/nbluet 775,16414 +/ngreent 776,16436 +/colorsetup 787,16603 +/fakecolorsetup 814,17370 +/BITMAPCOLOR 826,17636 +/BITMAPCOLORc 839,17926 +/BITMAPGRAY 855,18275 +/BITMAPGRAYc 858,18335 +/ENDBITMAP 861,18397 +/fillprocs 868,18497 + +prol-src/ordsets.prolog,525 +is_ordset(47,1310 +list_to_ord_set(63,1688 +ord_add_element(71,1867 +ord_del_element(85,2344 +ord_disjoint(100,2783 +ord_intersect(108,2953 +ord_intersection(126,3552 +ord_intersection3(130,3691 +ord_intersection(150,4531 +ord_intersection4(154,4703 +ord_intersection(176,5664 +ord_intersection2(181,5812 +ord_member(200,6318 +ord_seteq(216,6683 +ord_setproduct(225,6971 +ord_subset(240,7377 +ord_subtract(257,7861 +ord_symdiff(265,8054 +ord_union(288,8887 +ord_union4(303,9352 +ord_union(324,10171 +ord_union_all(329,10313 + +prol-src/natded.prolog,2319 +expandmng(100,2879 +normalize(116,3359 +fresh_vars(125,3716 +subst(138,4134 +normalize_fresh(159,4660 +reduce_subterm(171,5112 +reduce(185,5559 +free_var(196,5903 +free_for(209,6246 +compile_lex(231,6875 +consult_lex:-consult_lex248,7384 +lex(259,7754 +expandsyn(267,8068 +bas_syn(292,8897 +compile_empty:-compile_empty310,9376 +complete(328,10055 +add_active(340,10527 +parse(353,10949 +derived_analyses(364,11341 +build(378,11965 +buildact(392,12521 +mapsyn(412,13542 +add_edge(434,14278 +findcats(447,14758 +normalize_tree(465,15478 +normalize_trees(475,15856 +expandmng_tree(486,16248 +expandmng_trees(496,16614 +cat(511,17013 +subtree(644,21266 +hypothetical_mem(653,21565 +make_coor(667,22130 +start_up:-start_up688,23013 +tokenizeatom(710,23921 +tokenize(720,24348 +isoperator(752,25377 +isoptab(756,25431 +specialsymbol(765,25756 +sstab(771,25861 +parse_cgi(787,26347 +keyvalseq(792,26510 +andkeyvalseq(796,26609 +keyval(799,26688 +valseq(807,26920 +plusvalseq(810,27007 +val(816,27109 +argvals(824,27426 +commaargvals(828,27503 +atomval(833,27578 +atom(836,27640 +action(846,28004 +keyvalcgi(864,28649 +keyvalscgi(865,28670 +outsyn(868,28726 +act(876,29060 +actout(901,29906 +texttreelist(912,30089 +htmltreelist(918,30190 +fitchtreelist(924,30304 +pp_html_table_tree(938,30759 +pp_html_tree(949,31113 +pp_html_trees(988,32381 +pp_html_table_fitch_tree(999,32769 +pp_html_fitch_tree(1017,33672 +removeexp(1129,39002 +splitexp(1142,39490 +pp_exp(1155,39990 +map_word(1168,40249 +pp_exps(1180,40474 +pp_tree(1188,40777 +pp_trees(1216,41807 +pp_word_list(1225,42128 +pp_word(1231,42262 +pp_word_list_rest(1238,42569 +pp_cat(1248,42929 +pp_syn(1255,43196 +pp_syn_paren(1276,43899 +pp_paren(1293,44377 +pp_syn_back(1300,44661 +pp_bas_cat(1311,45001 +writecat(1322,45409 +writesubs(1351,46455 +writesups(1361,46757 +writelistsubs(1371,47090 +pp_lam(1380,47408 +pp_lam_bracket(1398,48022 +pp_lam_paren(1407,48338 +pp_rule(1429,49238 +member(1447,49866 +append_list(1451,49919 +append(1456,50010 +at_least_one_member(1460,50076 +numbervars(1464,50171 +reverse(1467,50209 +select(1471,50290 +select_last(1475,50357 +cat_atoms(1479,50436 +writelist(1485,50524 +write_lex_cat(1492,50676 +writebreaklex(1500,50988 +write_lex(1513,51265 +writebreak(1521,51541 +tt:-tt1531,51713 +mt:-mt1534,51784 +cmt:-cmt1537,51878 + +pyt-src/server.py,1438 +class Controls:Controls17,358 + def __init__(18,374 + def __repr__(24,590 + def __str__(34,871 +class Server:Server37,934 + def __init__(38,948 + def dump(73,2198 + def __repr__(125,3896 + def __str__(128,3945 +class User:User131,4014 + def __init__(132,4026 + def __repr__(172,5445 + def __str__(206,6883 +def flag2str(223,7212 +class LabeledEntry(232,7442 + def bind(234,7525 + def focus_set(236,7584 + def __init__(238,7629 +def ButtonBar(245,7909 +def helpwin(255,8280 +class ListEdit(267,8707 + def __init__(269,8808 + def handleList(303,10042 + def handleNew(306,10094 + def editItem(314,10426 + def deleteItem(320,10596 +def ConfirmQuit(326,10760 +class ControlEdit(375,12377 + def PostControls(376,12403 + def GatherControls(421,13530 +class ServerEdit(512,16264 + def __init__(513,16289 + def post(525,16629 + def gather(543,17191 + def nosave(547,17304 + def save(551,17408 + def refreshPort(556,17509 + def createWidgets(561,17663 + def edituser(631,20708 +class UserEdit(645,20921 + def __init__(646,20944 + def post(658,21283 + def gather(676,21841 + def nosave(680,21950 + def save(684,22052 + def createWidgets(689,22151 +class Configure(760,24879 + def __init__(761,24916 + def MakeDispose(772,25211 + def MakeSitelist(786,25706 + def editsite(794,25949 + def save(797,26022 + def nosave(807,26310 + +ruby-src/test.rb,637 +module ModuleExample1,0 + class ClassExample2,21 + def instance_method3,44 + def ClassExample.class_methodclass_method6,121 + def instance_method_exclamation!9,206 + def instance_method_question?12,310 + def instance_method_equals=instance_method_equals=15,408 + def `(18,502 + def +(21,592 + def [](24,640 + def []=([]=27,690 + def <<(30,752 + def ==(==33,802 + def <=(<=36,872 + def <=>(<=>39,943 + def ===(===42,990 + def module_instance_method46,1051 + def ModuleExample.module_class_methodmodule_class_method49,1131 + +ruby-src/test1.ru,935 +class A1,0 + def a(2,8 + def b(5,38 +module A9,57 + class B10,66 + ABC 11,76 + Def_ 12,88 + Xyzzy 13,106 + def foo!15,121 + def self._bar?(_bar?18,143 + def qux=(qux=22,194 + attr_reader :foofoo26,233 + attr_reader :read1 read127,254 + attr_reader :read1 , :read2;read227,254 + attr_reader :read1 , :read2; attr_writer :write1,write1=27,254 + attr_reader :read1 , :read2; attr_writer :write1, :write2write2=27,254 + attr_writer :bar,bar=28,316 + :baz,baz=29,338 + :moremore=30,360 + attr_accessor :teetee31,382 + attr_accessor :teetee=31,382 + alias_method :qux,qux32,405 + alias_method :xyz,xyz33,456 + :tee ; attr_reader :subtlesubtle34,479 + attr_reader(:foo1,foo135,523 + attr_reader(:foo1, :bar1,bar135,523 + :qux1)qux136,563 + alias_method ( :foo2,foo237,586 +A::Constant Constant42,655 + +tex-src/testenv.tex,52 +\newcommand{\nm}\nm4,77 +\section{blah}blah8,139 + +tex-src/gzip.texi,303 +@node Top,62,2139 +@node Copying,80,2652 +@node Overview,83,2705 +@node Sample,166,7272 +@node Invoking gzip,Invoking gzip210,8828 +@node Advanced usage,Advanced usage357,13495 +@node Environment,420,15207 +@node Tapes,437,15768 +@node Problems,460,16767 +@node Concept Index,Concept Index473,17287 + +tex-src/texinfo.tex,30627 +\def\texinfoversion{\texinfoversion26,1027 +\def\tie{\tie49,1518 +\def\gloggingall{\gloggingall72,2268 +\def\loggingall{\loggingall73,2337 +\def\onepageout#1{\onepageout99,3274 +\def\croppageout#1{\croppageout115,4024 +\def\cropmarks{\cropmarks142,5084 +\def\pagebody#1{\pagebody144,5131 +\def\ewtop{\ewtop157,5586 +\def\nstop{\nstop158,5650 +\def\ewbot{\ewbot160,5733 +\def\nsbot{\nsbot161,5797 +\def\parsearg #1{\parsearg170,6096 +\def\parseargx{\parseargx172,6174 +\def\parseargline{\parseargline182,6414 +\def\flushcr{\flushcr186,6535 +\newif\ifENV \ENVfalse \def\inENV{\inENV190,6734 +\def\ENVcheck{\ENVcheck191,6798 +\outer\def\begin{\begin198,7045 +\def\beginxxx #1{\beginxxx200,7083 +\def\end{\end208,7338 +\def\endxxx #1{\endxxx210,7366 +\def\errorE#1{\errorE216,7555 +\def\singlespace{\singlespace222,7749 +\def\@{\@232,7972 +\def\`{\`236,8072 +\def\'{\'237,8084 +\def\mylbrace {\mylbrace241,8132 +\def\myrbrace {\myrbrace242,8165 +\def\:{\:247,8279 +\def\*{\*250,8333 +\def\.{\.253,8409 +\def\w#1{\w258,8640 +\def\group{\group268,9123 + \def\Egroup{\Egroup273,9287 +\def\need{\need289,9729 +\def\needx#1{\needx300,10006 +\def\dots{\dots339,11392 +\def\page{\page343,11456 +\def\exdent{\exdent353,11783 +\def\exdentyyy #1{\exdentyyy354,11816 +\def\nofillexdent{\nofillexdent357,11960 +\def\nofillexdentyyy #1{\nofillexdentyyy358,12005 +\def\include{\include365,12189 +\def\includezzz #1{\includezzz366,12224 +\def\thisfile{\thisfile369,12275 +\def\center{\center373,12338 +\def\centerzzz #1{\centerzzz374,12371 +\def\sp{\sp380,12513 +\def\spxxx #1{\spxxx381,12538 +\def\comment{\comment387,12712 +\def\commentxxx #1{\commentxxx390,12809 +\def\ignoresections{\ignoresections396,12978 +\let\chapter=\relax=\relax397,13000 +\let\section=\relax=\relax406,13245 +\let\subsection=\relax=\relax409,13306 +\let\subsubsection=\relax=\relax410,13329 +\let\appendix=\relax=\relax411,13355 +\let\appendixsec=\relaxsec=\relax412,13376 +\let\appendixsection=\relaxsection=\relax413,13400 +\let\appendixsubsec=\relaxsubsec=\relax414,13428 +\let\appendixsubsection=\relaxsubsection=\relax415,13455 +\let\appendixsubsubsec=\relaxsubsubsec=\relax416,13486 +\let\appendixsubsubsection=\relaxsubsubsection=\relax417,13516 +\def\ignore{\ignore423,13618 +\long\def\ignorexxx #1\end ignore{\ignorexxx427,13758 +\def\direntry{\direntry429,13817 +\long\def\direntryxxx #1\end direntry{\direntryxxx430,13856 +\def\ifset{\ifset434,13966 +\def\ifsetxxx #1{\ifsetxxx436,14024 +\def\Eifset{\Eifset440,14151 +\def\ifsetfail{\ifsetfail441,14165 +\long\def\ifsetfailxxx #1\end ifset{\ifsetfailxxx442,14221 +\def\ifclear{\ifclear444,14282 +\def\ifclearxxx #1{\ifclearxxx446,14344 +\def\Eifclear{\Eifclear450,14475 +\def\ifclearfail{\ifclearfail451,14491 +\long\def\ifclearfailxxx #1\end ifclear{\ifclearfailxxx452,14551 +\def\set{\set456,14702 +\def\setxxx #1{\setxxx457,14729 +\def\clear{\clear460,14791 +\def\clearxxx #1{\clearxxx461,14822 +\def\iftex{\iftex466,14939 +\def\Eiftex{\Eiftex467,14952 +\def\ifinfo{\ifinfo468,14966 +\long\def\ifinfoxxx #1\end ifinfo{\ifinfoxxx469,15016 +\long\def\menu #1\end menu{\menu471,15075 +\def\asis#1{\asis472,15104 +\def\math#1{\math485,15647 +\def\node{\node487,15691 +\def\nodezzz#1{\nodezzz488,15729 +\def\nodexxx[#1,#2]{\nodexxx[489,15760 +\def\donoderef{\donoderef492,15822 +\def\unnumbnoderef{\unnumbnoderef496,15943 +\def\appendixnoderef{\appendixnoderef500,16074 +\expandafter\expandafter\expandafter\appendixsetref{setref501,16120 +\let\refill=\relaxill=\relax504,16209 +\def\setfilename{\setfilename509,16423 +\outer\def\bye{\bye518,16669 +\def\inforef #1{\inforef520,16725 +\def\inforefzzz #1,#2,#3,#4**{\inforefzzz521,16763 +\def\losespace #1{\losespace523,16860 +\def\sf{\sf532,17064 +\font\defbf=cmbx10 scaled \magstep1 %was 1314bf=cmbx10558,17859 +\font\deftt=cmtt10 scaled \magstep1tt=cmtt10559,17905 +\def\df{\df560,17941 +\def\resetmathfonts{\resetmathfonts635,20535 +\def\textfonts{\textfonts648,21124 +\def\chapfonts{\chapfonts653,21339 +\def\secfonts{\secfonts658,21555 +\def\subsecfonts{\subsecfonts663,21760 +\def\indexfonts{\indexfonts668,21977 +\def\smartitalicx{\smartitalicx691,22709 +\def\smartitalic#1{\smartitalic692,22785 +\let\cite=\smartitalic=\smartitalic698,22930 +\def\b#1{\b700,22954 +\def\t#1{\t703,22989 +\def\samp #1{\samp706,23141 +\def\key #1{\key707,23174 +\def\ctrl #1{\ctrl708,23235 +\def\tclose#1{\tclose716,23437 +\def\ {\720,23603 +\def\xkey{\xkey728,23872 +\def\kbdfoo#1#2#3\par{\kbdfoo729,23888 +\def\dmn#1{\dmn738,24189 +\def\kbd#1{\kbd740,24216 +\def\l#1{\l742,24273 +\def\r#1{\r744,24302 +\def\sc#1{\sc746,24370 +\def\ii#1{\ii747,24413 +\def\titlefont#1{\titlefont755,24646 +\def\titlepage{\titlepage761,24749 + \def\subtitlefont{\subtitlefont766,24976 + \def\authorfont{\authorfont768,25060 + \def\title{\title774,25270 + \def\titlezzz##1{\titlezzz775,25305 + \def\subtitle{\subtitle783,25620 + \def\subtitlezzz##1{\subtitlezzz784,25661 + \def\author{\author787,25779 + \def\authorzzz##1{\authorzzz788,25816 + \def\page{\page794,26107 +\def\Etitlepage{\Etitlepage804,26276 +\def\finishtitlepage{\finishtitlepage817,26664 +\def\evenheading{\evenheading846,27672 +\def\oddheading{\oddheading847,27715 +\def\everyheading{\everyheading848,27756 +\def\evenfooting{\evenfooting850,27802 +\def\oddfooting{\oddfooting851,27845 +\def\everyfooting{\everyfooting852,27886 +\def\headings #1 {\headings893,29578 +\def\HEADINGSoff{\HEADINGSoff895,29627 +\def\HEADINGSdouble{\HEADINGSdouble904,30054 +\def\HEADINGSsingle{\HEADINGSsingle914,30374 +\def\HEADINGSon{\HEADINGSon922,30595 +\def\HEADINGSafter{\HEADINGSafter924,30629 +\def\HEADINGSdoublex{\HEADINGSdoublex926,30724 +\def\HEADINGSsingleafter{\HEADINGSsingleafter933,30912 +\def\HEADINGSsinglex{\HEADINGSsinglex934,30973 +\def\today{\today943,31248 +\def\thistitle{\thistitle958,31793 +\def\settitle{\settitle959,31818 +\def\settitlezzz #1{\settitlezzz960,31855 +\def\internalBitem{\internalBitem992,32785 +\def\internalBitemx{\internalBitemx993,32835 +\def\internalBxitem "#1"{\internalBxitem995,32880 +\def\internalBxitemx "#1"{\internalBxitemx996,32960 +\def\internalBkitem{\internalBkitem998,33035 +\def\internalBkitemx{\internalBkitemx999,33087 +\def\kitemzzz #1{\kitemzzz1001,33134 +\def\xitemzzz #1{\xitemzzz1004,33236 +\def\itemzzz #1{\itemzzz1007,33339 +\def\item{\item1037,34410 +\def\itemx{\itemx1038,34461 +\def\kitem{\kitem1039,34514 +\def\kitemx{\kitemx1040,34567 +\def\xitem{\xitem1041,34622 +\def\xitemx{\xitemx1042,34675 +\def\description{\description1045,34785 +\def\table{\table1047,34835 +\def\ftable{\ftable1052,34979 +\def\Eftable{\Eftable1056,35125 +\def\vtable{\vtable1059,35194 +\def\Evtable{\Evtable1063,35340 +\def\dontindex #1{\dontindex1066,35409 +\def\fnitemindex #1{\fnitemindex1067,35429 +\def\vritemindex #1{\vritemindex1068,35474 +\def\tablez #1#2#3#4#5#6{\tablez1074,35623 +\def\Edescription{\Edescription1077,35681 +\def\itemfont{\itemfont1082,35883 +\def\Etable{\Etable1090,36109 +\def\itemize{\itemize1103,36433 +\def\itemizezzz #1{\itemizezzz1105,36469 +\def\itemizey #1#2{\itemizey1110,36564 +\def#2{1119,36810 +\def\itemcontents{\itemcontents1120,36851 +\def\bullet{\bullet1123,36899 +\def\minus{\minus1124,36926 +\def\frenchspacing{\frenchspacing1128,37034 +\def\splitoff#1#2\endmark{\splitoff1134,37259 +\def\enumerate{\enumerate1140,37489 +\def\enumeratezzz #1{\enumeratezzz1141,37528 +\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37581 + \def\thearg{\thearg1146,37728 + \ifx\thearg\empty \def\thearg{\thearg1147,37747 +\def\numericenumerate{\numericenumerate1184,39081 +\def\lowercaseenumerate{\lowercaseenumerate1190,39211 +\def\uppercaseenumerate{\uppercaseenumerate1203,39558 +\def\startenumeration#1{\startenumeration1219,40048 +\def\alphaenumerate{\alphaenumerate1227,40230 +\def\capsenumerate{\capsenumerate1228,40265 +\def\Ealphaenumerate{\Ealphaenumerate1229,40299 +\def\Ecapsenumerate{\Ecapsenumerate1230,40333 +\def\itemizeitem{\itemizeitem1234,40413 +\def\newindex #1{\newindex1259,41270 +\def\defindex{\defindex1268,41559 +\def\newcodeindex #1{\newcodeindex1272,41667 +\def\defcodeindex{\defcodeindex1279,41927 +\def\synindex #1 #2 {\synindex1283,42107 +\def\syncodeindex #1 #2 {\syncodeindex1292,42447 +\def\doindex#1{\doindex1309,43126 +\def\singleindexer #1{\singleindexer1310,43185 +\def\docodeindex#1{\docodeindex1313,43297 +\def\singlecodeindexer #1{\singlecodeindexer1314,43364 +\def\indexdummies{\indexdummies1316,43422 +\def\_{\_1317,43442 +\def\w{\w1318,43470 +\def\bf{\bf1319,43497 +\def\rm{\rm1320,43526 +\def\sl{\sl1321,43555 +\def\sf{\sf1322,43584 +\def\tt{\tt1323,43612 +\def\gtr{\gtr1324,43640 +\def\less{\less1325,43670 +\def\hat{\hat1326,43702 +\def\char{\char1327,43732 +\def\TeX{\TeX1328,43764 +\def\dots{\dots1329,43794 +\def\copyright{\copyright1330,43827 +\def\tclose##1{\tclose1331,43870 +\def\code##1{\code1332,43915 +\def\samp##1{\samp1333,43956 +\def\t##1{\t1334,43997 +\def\r##1{\r1335,44032 +\def\i##1{\i1336,44067 +\def\b##1{\b1337,44102 +\def\cite##1{\cite1338,44137 +\def\key##1{\key1339,44178 +\def\file##1{\file1340,44217 +\def\var##1{\var1341,44258 +\def\kbd##1{\kbd1342,44297 +\def\indexdummyfont#1{\indexdummyfont1347,44453 +\def\indexdummytex{\indexdummytex1348,44479 +\def\indexdummydots{\indexdummydots1349,44503 +\def\indexnofonts{\indexnofonts1351,44529 +\let\w=\indexdummyfontdummyfont1352,44549 +\let\t=\indexdummyfontdummyfont1353,44572 +\let\r=\indexdummyfontdummyfont1354,44595 +\let\i=\indexdummyfontdummyfont1355,44618 +\let\b=\indexdummyfontdummyfont1356,44641 +\let\emph=\indexdummyfontdummyfont1357,44664 +\let\strong=\indexdummyfontdummyfont1358,44690 +\let\cite=\indexdummyfont=\indexdummyfont1359,44718 +\let\sc=\indexdummyfontdummyfont1360,44744 +\let\tclose=\indexdummyfontdummyfont1364,44916 +\let\code=\indexdummyfontdummyfont1365,44944 +\let\file=\indexdummyfontdummyfont1366,44970 +\let\samp=\indexdummyfontdummyfont1367,44996 +\let\kbd=\indexdummyfontdummyfont1368,45022 +\let\key=\indexdummyfontdummyfont1369,45047 +\let\var=\indexdummyfontdummyfont1370,45072 +\let\TeX=\indexdummytexdummytex1371,45097 +\let\dots=\indexdummydotsdummydots1372,45121 +\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45373 +\def\doind #1#2{\doind1384,45429 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45472 +\def\rawbackslashxx{\rawbackslashxx1389,45612 +{\indexnofontsnofonts1394,45874 +\def\dosubind #1#2#3{\dosubind1405,46185 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46233 +\def\rawbackslashxx{\rawbackslashxx1410,46337 +{\indexnofontsnofonts1414,46491 +\def\findex {\findex1443,47422 +\def\kindex {\kindex1444,47445 +\def\cindex {\cindex1445,47468 +\def\vindex {\vindex1446,47491 +\def\tindex {\tindex1447,47514 +\def\pindex {\pindex1448,47537 +\def\cindexsub {\cindexsub1450,47561 +\def\printindex{\printindex1462,47888 +\def\doprintindex#1{\doprintindex1464,47929 + \def\indexbackslash{\indexbackslash1481,48414 + \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48453 +\def\initial #1{\initial1517,49525 +\def\entry #1#2{\entry1523,49732 + \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50379 +\def\indexdotfill{\indexdotfill1549,50707 +\def\primary #1{\primary1552,50813 +\def\secondary #1#2{\secondary1556,50895 +\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50977 +\newbox\partialpageialpage1566,51150 +\def\begindoublecolumns{\begindoublecolumns1572,51308 + \output={\global\setbox\partialpage=ialpage=1573,51344 +\def\enddoublecolumns{\enddoublecolumns1577,51532 +\def\doublecolumnout{\doublecolumnout1580,51617 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51686 +\def\pagesofar{\pagesofar1584,51864 +\def\balancecolumns{\balancecolumns1588,52101 + \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52272 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52533 +\newcount \appendixno \appendixno = `\@no1627,53438 +\def\appendixletter{\appendixletter1628,53479 +\def\opencontents{\opencontents1632,53582 +\def\thischapter{\thischapter1637,53763 +\def\seccheck#1{\seccheck1638,53801 +\def\chapternofonts{\chapternofonts1643,53905 +\def\result{\result1646,53980 +\def\equiv{\equiv1647,54015 +\def\expansion{\expansion1648,54048 +\def\print{\print1649,54089 +\def\TeX{\TeX1650,54122 +\def\dots{\dots1651,54151 +\def\copyright{\copyright1652,54182 +\def\tt{\tt1653,54223 +\def\bf{\bf1654,54250 +\def\w{\w1655,54278 +\def\less{\less1656,54303 +\def\gtr{\gtr1657,54334 +\def\hat{\hat1658,54363 +\def\char{\char1659,54392 +\def\tclose##1{\tclose1660,54423 +\def\code##1{\code1661,54467 +\def\samp##1{\samp1662,54507 +\def\r##1{\r1663,54547 +\def\b##1{\b1664,54581 +\def\key##1{\key1665,54615 +\def\file##1{\file1666,54653 +\def\kbd##1{\kbd1667,54693 +\def\i##1{\i1669,54801 +\def\cite##1{\cite1670,54835 +\def\var##1{\var1671,54875 +\def\emph##1{\emph1672,54913 +\def\dfn##1{\dfn1673,54953 +\def\thischaptername{\thischaptername1676,54994 +\outer\def\chapter{\chapter1677,55033 +\def\chapterzzz #1{\chapterzzz1678,55074 +{\chapternofonts%nofonts%1687,55470 +\global\let\section = \numberedsec=1692,55623 +\global\let\subsection = \numberedsubsec=1693,55658 +\global\let\subsubsection = \numberedsubsubsec=1694,55699 +\outer\def\appendix{\appendix1697,55750 +\def\appendixzzz #1{\appendixzzz1698,55793 +\global\advance \appendixno by 1 \message{no1700,55870 +\chapmacro {#1}{Appendix \appendixletter}letter1701,55939 +\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56032 +{\chapternofonts%nofonts%1705,56104 + {#1}{Appendix \appendixletter}letter1707,56160 +\appendixnoderef %noderef1710,56260 +\global\let\section = \appendixsec=1711,56279 +\global\let\subsection = \appendixsubsec=1712,56314 +\global\let\subsubsection = \appendixsubsubsec=1713,56355 +\outer\def\top{\top1716,56406 +\outer\def\unnumbered{\unnumbered1717,56446 +\def\unnumberedzzz #1{\unnumberedzzz1718,56493 +{\chapternofonts%nofonts%1722,56656 +\global\let\section = \unnumberedsec=1727,56806 +\global\let\subsection = \unnumberedsubsec=1728,56843 +\global\let\subsubsection = \unnumberedsubsubsec=1729,56886 +\outer\def\numberedsec{\numberedsec1732,56939 +\def\seczzz #1{\seczzz1733,56980 +{\chapternofonts%nofonts%1736,57136 +\outer\def\appendixsection{\appendixsection1745,57322 +\outer\def\appendixsec{\appendixsec1746,57379 +\def\appendixsectionzzz #1{\appendixsectionzzz1747,57432 +\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57544 +{\chapternofonts%nofonts%1750,57612 +{#1}{\appendixletter}letter1752,57668 +\appendixnoderef %noderef1755,57768 +\outer\def\unnumberedsec{\unnumberedsec1759,57808 +\def\unnumberedseczzz #1{\unnumberedseczzz1760,57861 +{\chapternofonts%nofonts%1762,57956 +\outer\def\numberedsubsec{\numberedsubsec1770,58124 +\def\numberedsubseczzz #1{\numberedsubseczzz1771,58179 +{\chapternofonts%nofonts%1774,58358 +\outer\def\appendixsubsec{\appendixsubsec1783,58562 +\def\appendixsubseczzz #1{\appendixsubseczzz1784,58617 +\subsecheading {#1}{\appendixletter}letter1786,58739 +{\chapternofonts%nofonts%1787,58804 +{#1}{\appendixletter}letter1789,58863 +\appendixnoderef %noderef1792,58978 +\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59018 +\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59077 +{\chapternofonts%nofonts%1799,59178 +\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59349 +\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59410 +{\chapternofonts%nofonts%1812,59607 +\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59840 +\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59901 + {\appendixletter}letter1827,60040 +{\chapternofonts%nofonts%1828,60106 + {\appendixletter}letter1830,60171 +\appendixnoderef %noderef1834,60305 +\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60345 +\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60410 +{\chapternofonts%nofonts%1841,60517 +\def\infotop{\infotop1851,60846 +\def\infounnumbered{\infounnumbered1852,60884 +\def\infounnumberedsec{\infounnumberedsec1853,60929 +\def\infounnumberedsubsec{\infounnumberedsubsec1854,60980 +\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61037 +\def\infoappendix{\infoappendix1857,61101 +\def\infoappendixsec{\infoappendixsec1858,61142 +\def\infoappendixsubsec{\infoappendixsubsec1859,61189 +\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61242 +\def\infochapter{\infochapter1862,61302 +\def\infosection{\infosection1863,61341 +\def\infosubsection{\infosubsection1864,61380 +\def\infosubsubsection{\infosubsubsection1865,61425 +\global\let\section = \numberedsec=1870,61662 +\global\let\subsection = \numberedsubsec=1871,61697 +\global\let\subsubsection = \numberedsubsubsec=1872,61738 +\def\majorheading{\majorheading1886,62245 +\def\majorheadingzzz #1{\majorheadingzzz1887,62290 +\def\chapheading{\chapheading1893,62523 +\def\chapheadingzzz #1{\chapheadingzzz1894,62566 +\def\heading{\heading1899,62761 +\def\subheading{\subheading1901,62798 +\def\subsubheading{\subsubheading1903,62841 +\def\dobreak#1#2{\dobreak1910,63118 +\def\setchapterstyle #1 {\setchapterstyle1912,63196 +\def\chapbreak{\chapbreak1919,63451 +\def\chappager{\chappager1920,63501 +\def\chapoddpage{\chapoddpage1921,63539 +\def\setchapternewpage #1 {\setchapternewpage1923,63618 +\def\CHAPPAGoff{\CHAPPAGoff1925,63675 +\def\CHAPPAGon{\CHAPPAGon1929,63769 +\global\def\HEADINGSon{\HEADINGSon1932,63860 +\def\CHAPPAGodd{\CHAPPAGodd1934,63902 +\global\def\HEADINGSon{\HEADINGSon1937,63998 +\def\CHAPFplain{\CHAPFplain1941,64052 +\def\chfplain #1#2{\chfplain1945,64144 +\def\unnchfplain #1{\unnchfplain1956,64367 +\def\unnchfopen #1{\unnchfopen1964,64596 +\def\chfopen #1#2{\chfopen1970,64804 +\def\CHAPFopen{\CHAPFopen1975,64948 +\def\subsecheadingbreak{\subsecheadingbreak1982,65166 +\def\secheadingbreak{\secheadingbreak1985,65295 +\def\secheading #1#2#3{\secheading1993,65577 +\def\plainsecheading #1{\plainsecheading1994,65633 +\def\secheadingi #1{\secheadingi1995,65676 +\def\subsecheading #1#2#3#4{\subsecheading2006,66044 +\def\subsecheadingi #1{\subsecheadingi2007,66111 +\def\subsubsecfonts{\subsubsecfonts2014,66408 +\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66531 +\def\subsubsecheadingi #1{\subsubsecheadingi2018,66609 +\def\startcontents#1{\startcontents2032,67081 + \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67354 +\outer\def\contents{\contents2049,67713 +\outer\def\summarycontents{\summarycontents2057,67857 + \def\secentry ##1##2##3##4{\secentry2067,68228 + \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68263 + \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68298 + \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68339 + \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68377 + \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68424 +\def\chapentry#1#2#3{\chapentry2085,68858 +\def\shortchapentry#1#2#3{\shortchapentry2088,68975 + {#2\labelspace #1}space2091,69085 +\def\unnumbchapentry#1#2{\unnumbchapentry2094,69139 +\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69186 +\def\secentry#1#2#3#4{\secentry2102,69350 +\def\unnumbsecentry#1#2{\unnumbsecentry2103,69409 +\def\subsecentry#1#2#3#4#5{\subsecentry2106,69470 +\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69540 +\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69614 + \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69648 +\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69699 +\def\dochapentry#1#2{\dochapentry2123,70073 +\def\dosecentry#1#2{\dosecentry2138,70678 +\def\dosubsecentry#1#2{\dosubsecentry2145,70856 +\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71041 +\def\labelspace{\labelspace2160,71292 +\def\dopageno#1{\dopageno2162,71327 +\def\doshortpageno#1{\doshortpageno2163,71353 +\def\chapentryfonts{\chapentryfonts2165,71385 +\def\secentryfonts{\secentryfonts2166,71420 +\def\point{\point2192,72379 +\def\result{\result2194,72400 +\def\expansion{\expansion2195,72473 +\def\print{\print2196,72544 +\def\equiv{\equiv2198,72611 +\def\error{\error2218,73384 +\def\tex{\tex2224,73613 +\def\@{\@2242,73996 +\gdef\sepspaces{\def {\ }}}\2265,74728 +\def\aboveenvbreak{\aboveenvbreak2268,74810 +\def\afterenvbreak{\afterenvbreak2272,74976 +\def\ctl{\ctl2286,75487 +\def\ctr{\ctr2287,75559 +\def\cbl{\cbl2288,75598 +\def\cbr{\cbr2289,75638 +\def\carttop{\carttop2290,75677 +\def\cartbot{\cartbot2293,75785 +\long\def\cartouche{\cartouche2299,75925 +\def\Ecartouche{\Ecartouche2326,76713 +\def\lisp{\lisp2338,76848 +\def\Elisp{\Elisp2348,77195 +\def\next##1{\next2360,77521 +\def\Eexample{\Eexample2364,77563 +\def\Esmallexample{\Esmallexample2367,77610 +\def\smalllispx{\smalllispx2373,77788 +\def\Esmalllisp{\Esmalllisp2383,78142 +\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78498 +\def\next##1{\next2397,78555 +\def\display{\display2401,78635 +\def\Edisplay{\Edisplay2410,78954 +\def\next##1{\next2422,79265 +\def\format{\format2426,79368 +\def\Eformat{\Eformat2434,79664 +\def\next##1{\next2437,79753 +\def\flushleft{\flushleft2441,79805 +\def\Eflushleft{\Eflushleft2451,80176 +\def\next##1{\next2454,80269 +\def\flushright{\flushright2456,80291 +\def\Eflushright{\Eflushright2466,80663 +\def\next##1{\next2470,80794 +\def\quotation{\quotation2474,80852 +\def\Equotation{\Equotation2480,81044 +\def\setdeffont #1 {\setdeffont2493,81442 +\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81488 +\newskip\defargsindent \defargsindent=50ptargsindent2496,81531 +\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81574 +\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81617 +\def\activeparens{\activeparens2503,81815 +\def\opnr{\opnr2529,83027 +\def\lbrb{\lbrb2530,83092 +\def\defname #1#2{\defname2536,83293 +\advance\dimen2 by -\defbodyindentbodyindent2540,83411 +\advance\dimen3 by -\defbodyindentbodyindent2542,83465 +\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83519 +\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83661 +\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83736 +\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84105 +\advance\leftskip by -\defbodyindentbodyindent2557,84239 +\exdentamount=\defbodyindentbodyindent2558,84276 +\def\defparsebody #1#2#3{\defparsebody2568,84635 +\def#1{2572,84819 +\def#2{2573,84855 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84927 +\exdentamount=\defbodyindentbodyindent2576,85001 +\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85105 +\def#1{2585,85266 +\def#2##1 {2586,85302 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85385 +\exdentamount=\defbodyindentbodyindent2589,85459 +\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85544 +\def#1{2596,85705 +\def#2##1 ##2 {2597,85741 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85841 +\exdentamount=\defbodyindentbodyindent2601,85915 +\def\defvarparsebody #1#2#3{\defvarparsebody2608,86186 +\def#1{2612,86373 +\def#2{2613,86409 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86468 +\exdentamount=\defbodyindentbodyindent2616,86542 +\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86633 +\def#1{2625,86792 +\def#2##1 {2626,86828 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86898 +\exdentamount=\defbodyindentbodyindent2629,86972 +\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87044 +\def#1{2636,87208 +\def#2##1 ##2 {2637,87244 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87331 +\exdentamount=\defbodyindentbodyindent2641,87405 +\def\defunargs #1{\defunargs2664,88165 +\def\deftypefunargs #1{\deftypefunargs2676,88547 +\def\deffn{\deffn2690,88929 +\def\deffnheader #1#2#3{\deffnheader2692,88986 +\begingroup\defname {name2693,89034 +\def\defun{\defun2699,89179 +\def\defunheader #1#2{\defunheader2701,89232 +\begingroup\defname {name2702,89307 +\defunargs {unargs2703,89343 +\def\deftypefun{\deftypefun2709,89491 +\def\deftypefunheader #1#2{\deftypefunheader2712,89613 +\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89722 +\begingroup\defname {name2716,89814 +\deftypefunargs {typefunargs2717,89860 +\def\deftypefn{\deftypefn2723,90031 +\def\deftypefnheader #1#2#3{\deftypefnheader2726,90180 +\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90316 +\begingroup\defname {name2730,90409 +\deftypefunargs {typefunargs2731,90449 +\def\defmac{\defmac2737,90570 +\def\defmacheader #1#2{\defmacheader2739,90627 +\begingroup\defname {name2740,90703 +\defunargs {unargs2741,90736 +\def\defspec{\defspec2747,90860 +\def\defspecheader #1#2{\defspecheader2749,90921 +\begingroup\defname {name2750,90998 +\defunargs {unargs2751,91038 +\def\deffnx #1 {\deffnx2758,91233 +\def\defunx #1 {\defunx2759,91290 +\def\defmacx #1 {\defmacx2760,91347 +\def\defspecx #1 {\defspecx2761,91406 +\def\deftypefnx #1 {\deftypefnx2762,91467 +\def\deftypeunx #1 {\deftypeunx2763,91532 +\def\defop #1 {\defop2769,91678 +\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91713 +\def\defopheader #1#2#3{\defopheader2772,91767 +\begingroup\defname {name2774,91856 +\defunargs {unargs2775,91902 +\def\defmethod{\defmethod2780,91963 +\def\defmethodheader #1#2#3{\defmethodheader2782,92036 +\begingroup\defname {name2784,92124 +\defunargs {unargs2785,92164 +\def\defcv #1 {\defcv2790,92238 +\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92273 +\def\defcvarheader #1#2#3{\defcvarheader2793,92332 +\begingroup\defname {name2795,92418 +\defvarargs {varargs2796,92464 +\def\defivar{\defivar2801,92537 +\def\defivarheader #1#2#3{\defivarheader2803,92600 +\begingroup\defname {name2805,92686 +\defvarargs {varargs2806,92737 +\def\defopx #1 {\defopx2812,92886 +\def\defmethodx #1 {\defmethodx2813,92943 +\def\defcvx #1 {\defcvx2814,93008 +\def\defivarx #1 {\defivarx2815,93065 +\def\defvarargs #1{\defvarargs2822,93336 +\def\defvr{\defvr2828,93480 +\def\defvrheader #1#2#3{\defvrheader2830,93535 +\begingroup\defname {name2831,93583 +\def\defvar{\defvar2835,93668 +\def\defvarheader #1#2{\defvarheader2837,93728 +\begingroup\defname {name2838,93799 +\defvarargs {varargs2839,93835 +\def\defopt{\defopt2844,93901 +\def\defoptheader #1#2{\defoptheader2846,93961 +\begingroup\defname {name2847,94032 +\defvarargs {varargs2848,94071 +\def\deftypevar{\deftypevar2853,94128 +\def\deftypevarheader #1#2{\deftypevarheader2856,94244 +\begingroup\defname {name2858,94327 +\def\deftypevr{\deftypevr2865,94501 +\def\deftypevrheader #1#2#3{\deftypevrheader2867,94572 +\begingroup\defname {name2868,94624 +\def\defvrx #1 {\defvrx2876,94861 +\def\defvarx #1 {\defvarx2877,94918 +\def\defoptx #1 {\defoptx2878,94977 +\def\deftypevarx #1 {\deftypevarx2879,95036 +\def\deftypevrx #1 {\deftypevrx2880,95103 +\def\deftpargs #1{\deftpargs2885,95252 +\def\deftp{\deftp2889,95332 +\def\deftpheader #1#2#3{\deftpheader2891,95387 +\begingroup\defname {name2892,95435 +\def\deftpx #1 {\deftpx2897,95594 +\def\setref#1{\setref2908,95915 +\def\unnumbsetref#1{\unnumbsetref2913,96029 +\def\appendixsetref#1{\appendixsetref2918,96136 +\def\pxref#1{\pxref2929,96547 +\def\xref#1{\xref2930,96583 +\def\ref#1{\ref2931,96618 +\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96648 +\def\printedmanual{\printedmanual2933,96691 +\def\printednodename{\printednodename2934,96729 +\def\printednodename{\printednodename2939,96854 +section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97487 +\refx{x2957,97565 +\def\dosetq #1#2{\dosetq2965,97785 +\def\internalsetq #1#2{\internalsetq2973,98043 +\def\Ypagenumber{\Ypagenumber2977,98144 +\def\Ytitle{\Ytitle2979,98170 +\def\Ynothing{\Ynothing2981,98197 +\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98214 +\def\Yappendixletterandtype{\Yappendixletterandtype2992,98530 +\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98560 +\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98615 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98719 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98790 + \def\linenumber{\linenumber3009,99129 +\def\refx#1#2{\refx3015,99313 +\def\xrdef #1#2{\xrdef3037,99939 +\def\readauxfile{\readauxfile3040,100024 +\def\supereject{\supereject3110,101805 +\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102490 +\def\openindices{\openindices3139,102676 +\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102901 +\parindent = \defaultparindentaultparindent3152,102953 +\def\smallbook{\smallbook3175,103677 +\global\def\Esmallexample{\Esmallexample3192,104104 +\def\afourpaper{\afourpaper3196,104195 +\def\finalout{\finalout3224,105003 +\def\normaldoublequote{\normaldoublequote3235,105264 +\def\normaltilde{\normaltilde3236,105290 +\def\normalcaret{\normalcaret3237,105310 +\def\normalunderscore{\normalunderscore3238,105330 +\def\normalverticalbar{\normalverticalbar3239,105355 +\def\normalless{\normalless3240,105381 +\def\normalgreater{\normalgreater3241,105400 +\def\normalplus{\normalplus3242,105422 +\def\ifusingtt#1#2{\ifusingtt3253,105914 +\def\activedoublequote{\activedoublequote3261,106242 +\def~{~3264,106328 +\def^{^3267,106389 +\def_{_3270,106428 +\def\_{\_3272,106502 +\def\lvvmode{\lvvmode3279,106839 +\def|{|3282,106889 +\def<{<3285,106952 +\def>{>3288,107009 +\def+{+3290,107047 +\def\turnoffactive{\turnoffactive3296,107208 +\global\def={=3307,107494 +\def\normalbackslash{\normalbackslash3321,107876 + +c-src/c.c,76 +T f(1,0 +}T i;2,14 +void bar(5,69 +int foobar(6,94 +interface_locate(9,131 + +c.c,1663 +my_printf 135, +void fatala 138, +max 141, +struct bar 143, +__attribute__ ((always_inline)) max 147, +struct foo150, +char stack[stack155, +struct S 156, +} wait_status_ptr_t 161, +Some_Class A 162, +typedef T1 T3 163, +T3 z 164, +typedef int more_aligned_int 165, +struct S __attribute__ ((vector_size (16))) foo;166, +int foo 167, +char *__attribute__((aligned(8))) *f;f168, +int i 169, +extern void foobar 170, +typedef struct cacheLRUEntry_s172, +__attribute__ ((packed)) cacheLRUEntry_t;177, +struct foo 178, + f1 183, +void f2 184, +int x 188, +struct foo 189, +short array[array190, +int f193, +DEAFUN 196, +XDEFUN 203, +DEFUN ("x-get-selection-internal", Fx_get_selection_internal,x-get-selection-internal206, + Fx_get_selection_internal,x-get-selection-internal212, + Fy_get_selection_internal,y-get-selection-internal216, +defun_func1(218, +DEFUN_func2(220, +typedef int bool;222, +bool funcboo 223, +struct my_struct 226, +typedef struct my_struct my_typedef;228, +int bla 229, +a(234, +int func1237, +static struct cca_control init_control 239, +static tpcmd rbtp 240, +static byte ring1 241, +static byte ring2 242, +request request 243, +int func2 246, + aaa;249, + bbb;251, +struct sss1 252, +struct sss2253, + struct ss3255, +struct a b;259, +struct aa *b;b260, + **b;b262, +caccacacca 263, +a 267, + typedef struct aa 269, + typedef struct aa {} aaa;269, +static void inita 271, +node *lasta lasta272, +b 273, + typedef int bb;275, +static void initb 277, +node *lastb lastb278, +typedef enum { REG_ENOSYS 279, +typedef enum { REG_ENOSYS = -1, aa 279, +typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;279, + +c-src/a/b/b.c,18 +#define this 1,0 + +../c/c.web,20 +#define questo 34, + +y-src/parse.y,738 +#define obstack_chunk_alloc 46,1116 +#define obstack_chunk_free 47,1154 +VOIDSTAR parse_hash;63,1405 +unsigned char fnin[fnin67,1524 +#define YYSTYPE 71,1622 +typedef struct node *YYSTYPE;YYSTYPE72,1653 +YYSTYPE parse_return;73,1683 +char *instr;instr80,1795 +int parse_error 81,1808 +line:line86,1867 +exp:exp94,1980 +exp_list:exp_list262,5647 +range_exp:range_exp268,5745 +range_exp_list:range_exp_list272,5775 +cell:cell278,5893 +yyerror FUN1(285,5940 +make_list FUN2(292,6020 +#define ERROR 303,6220 +yylex FUN0(314,6397 +parse_cell_or_range FUN2(586,11763 +#define CK_ABS_R(670,13205 +#define CK_REL_R(674,13284 +#define CK_ABS_C(679,13413 +#define CK_REL_C(683,13492 +#define MAYBEREL(688,13621 +str_to_col FUN1(846,16822 + +y-src/parse.c,520 +#define YYBISON 4,64 +# define NE 6,114 +# define LE 7,130 +# define GE 8,146 +# define NEG 9,162 +# define L_CELL 10,179 +# define L_RANGE 11,199 +# define L_VAR 12,220 +# define L_CONST 13,239 +# define L_FN0 14,260 +# define L_FN1 15,279 +# define L_FN2 16,298 +# define L_FN3 17,317 +# define L_FN4 18,336 +# define L_FNN 19,355 +# define L_FN1R 20,374 +# define L_FN2R 21,394 +# define L_FN3R 22,414 +# define L_FN4R 23,434 +# define L_FNNR 24,454 +# define L_LE 25,474 +# define L_NE 26,492 +# define L_GE 27,510 + +parse.y,1181 +#define obstack_chunk_alloc 46, +#define obstack_chunk_free 47, +VOIDSTAR parse_hash;63, +unsigned char fnin[fnin67, +#define YYSTYPE 71, +typedef struct node *YYSTYPE;YYSTYPE72, +YYSTYPE parse_return;73, +char *instr;instr80, +int parse_error 81, +#define YYSTYPE 85, +# define YYDEBUG 88, +#define YYFINAL 93, +#define YYFLAG 94, +#define YYNTBASE 95, +#define YYTRANSLATE(98, +static const char yytranslate[yytranslate101, +static const short yyprhs[yyprhs134, +static const short yyrhs[yyrhs142, +static const short yyrline[yyrline171, +static const char *const yytname[yytname185, +static const short yyr1[yyr1197, +static const short yyr2[yyr2207, +static const short yydefact[yydefact219, +static const short yydefgoto[yydefgoto237, +static const short yypact[yypact242, +static const short yypgoto[yypgoto260, +#define YYLAST 266, +static const short yytable[yytable269, +static const short yycheck[yycheck330, +yyerror FUN1(285, +make_list FUN2(292, +#define ERROR 303, +yylex FUN0(314, +parse_cell_or_range FUN2(586, +#define CK_ABS_R(670, +#define CK_REL_R(674, +#define CK_ABS_C(679, +#define CK_REL_C(683, +#define MAYBEREL(688, +str_to_col FUN1(846, + +/usr/share/bison/bison.simple,2110 +# define YYSTD(40, +# define YYSTD(42, +# define YYSTACK_ALLOC 50, +# define YYSIZE_T 51, +# define YYSTACK_ALLOC 55, +# define YYSIZE_T 56, +# define YYSTACK_ALLOC 59, +# define YYSTACK_FREE(67, +# define YYSIZE_T 71, +# define YYSIZE_T 75, +# define YYSTACK_ALLOC 78, +# define YYSTACK_FREE 79, +union yyalloc83, +# define YYSTACK_GAP_MAX 93, +# define YYSTACK_BYTES(98, +# define YYSTACK_BYTES(102, +# define YYSTACK_RELOCATE(112, +# define YYSIZE_T 128, +# define YYSIZE_T 131, +# define YYSIZE_T 136, +# define YYSIZE_T 140, +# define YYSIZE_T 145, +#define yyerrok 148, +#define yyclearin 149, +#define YYEMPTY 150, +#define YYEOF 151, +#define YYACCEPT 152, +#define YYABORT 153, +#define YYERROR 154, +#define YYFAIL 158, +#define YYRECOVERING(159, +#define YYBACKUP(160, +#define YYTERROR 177, +#define YYERRCODE 178, +# define YYLLOC_DEFAULT(189, +# define YYLEX 200, +# define YYLEX 202, +# define YYLEX 206, +# define YYLEX 208, +# define YYLEX 212, +# define YYFPRINTF 225, +# define YYDPRINTF(228, +int yydebug;237, +# define YYDPRINTF(239, +# define YYINITDEPTH 244, +# undef YYMAXDEPTH255, +# define YYMAXDEPTH 259, +# define yymemcpy 264, +yymemcpy 271, +# define yystrlen 293, +yystrlen 298, +# define yystpcpy 316, +yystpcpy 322, +# define YYPARSE_PARAM_ARG 351, +# define YYPARSE_PARAM_DECL352, +# define YYPARSE_PARAM_ARG 354, +# define YYPARSE_PARAM_DECL 355, +# define YYPARSE_PARAM_ARG358, +# define YYPARSE_PARAM_DECL359, +#define YY_DECL_NON_LSP_VARIABLES 374, +# define YY_DECL_VARIABLES 385, +# define YY_DECL_VARIABLES 391, +yyparse 403, +# define YYPOPSTACK 445, +# define YYPOPSTACK 447, +# undef YYSTACK_RELOCATE548, + *++yyvsp yyvsp746, + *++yylsp yylsp748, + yyn 755, + yystate 757, + yystate 761, + goto yynewstate;763, + goto yyerrlab1;823, + yyerrstatus 846, + goto yyerrhandle;848, + yyn 861, + yystate 875, + yyn 895, + yyn 903, + *++yyvsp yyvsp919, + *++yylsp yylsp921, + yystate 924, + goto yynewstate;925, + yyresult 932, + goto yyreturn;933, + yyresult 939, + goto yyreturn;940, + yyresult 947, + +y-src/atest.y,9 +exp 2,3 + +y-src/cccp.c,303 +#define YYBISON 4,63 +# define INT 6,113 +# define CHAR 7,130 +# define NAME 8,148 +# define ERROR 9,166 +# define OR 10,185 +# define AND 11,201 +# define EQUAL 12,218 +# define NOTEQUAL 13,237 +# define LEQ 14,259 +# define GEQ 15,276 +# define LSH 16,293 +# define RSH 17,310 +# define UNARY 18,327 + +cccp.y,1579 +typedef unsigned char U_CHAR;38, +struct arglist 41, +#define NULL 51, +#define GENERIC_PTR 56, +#define GENERIC_PTR 58, +#define NULL_PTR 63, +int expression_value;68, +static jmp_buf parse_return_error;70, +static int keyword_parsing 73, +#define CHAR_TYPE_SIZE 87, +#define INT_TYPE_SIZE 91, +#define LONG_TYPE_SIZE 95, +#define WCHAR_TYPE_SIZE 99, +#define possible_sum_sign(104, + struct constant 113, + struct name 114, +} yystype;118, +# define YYSTYPE 119, +# define YYDEBUG 122, +#define YYFINAL 127, +#define YYFLAG 128, +#define YYNTBASE 129, +#define YYTRANSLATE(132, +static const char yytranslate[yytranslate135, +static const short yyprhs[yyprhs167, +static const short yyrhs[yyrhs174, +static const short yyrline[yyrline195, +static const char *const yytname[yytname208, +static const short yyr1[yyr1219, +static const short yyr2[yyr2228, +static const short yydefact[yydefact239, +static const short yydefgoto[yydefgoto251, +static const short yypact[yypact256, +static const short yypgoto[yypgoto268, +#define YYLAST 274, +static const short yytable[yytable277, +static const short yycheck[yycheck301, +static char *lexptr;lexptr332, +parse_number 341, +struct token 437, +static struct token tokentab2[tokentab2442, +yylex 459, +parse_escape 740, +yyerror 836, +integer_overflow 844, +left_shift 851, +right_shift 873, +parse_c_expression 893, +main 923, +unsigned char is_idchar[is_idchar948, +unsigned char is_idstart[is_idstart950, +char is_hor_space[is_hor_space953, +initialize_random_junk 958, +error 988, +warning 993, +lookup 999, + +/usr/share/bison/bison.simple,2110 +# define YYSTD(41, +# define YYSTD(43, +# define YYSTACK_ALLOC 51, +# define YYSIZE_T 52, +# define YYSTACK_ALLOC 56, +# define YYSIZE_T 57, +# define YYSTACK_ALLOC 60, +# define YYSTACK_FREE(68, +# define YYSIZE_T 72, +# define YYSIZE_T 76, +# define YYSTACK_ALLOC 79, +# define YYSTACK_FREE 80, +union yyalloc84, +# define YYSTACK_GAP_MAX 94, +# define YYSTACK_BYTES(99, +# define YYSTACK_BYTES(103, +# define YYSTACK_RELOCATE(113, +# define YYSIZE_T 129, +# define YYSIZE_T 132, +# define YYSIZE_T 137, +# define YYSIZE_T 141, +# define YYSIZE_T 146, +#define yyerrok 149, +#define yyclearin 150, +#define YYEMPTY 151, +#define YYEOF 152, +#define YYACCEPT 153, +#define YYABORT 154, +#define YYERROR 155, +#define YYFAIL 159, +#define YYRECOVERING(160, +#define YYBACKUP(161, +#define YYTERROR 178, +#define YYERRCODE 179, +# define YYLLOC_DEFAULT(190, +# define YYLEX 201, +# define YYLEX 203, +# define YYLEX 207, +# define YYLEX 209, +# define YYLEX 213, +# define YYFPRINTF 226, +# define YYDPRINTF(229, +int yydebug;238, +# define YYDPRINTF(240, +# define YYINITDEPTH 245, +# undef YYMAXDEPTH256, +# define YYMAXDEPTH 260, +# define yymemcpy 265, +yymemcpy 272, +# define yystrlen 294, +yystrlen 299, +# define yystpcpy 317, +yystpcpy 323, +# define YYPARSE_PARAM_ARG 351, +# define YYPARSE_PARAM_DECL352, +# define YYPARSE_PARAM_ARG 354, +# define YYPARSE_PARAM_DECL 355, +# define YYPARSE_PARAM_ARG358, +# define YYPARSE_PARAM_DECL359, +#define YY_DECL_NON_LSP_VARIABLES 374, +# define YY_DECL_VARIABLES 385, +# define YY_DECL_VARIABLES 391, +yyparse 403, +# define YYPOPSTACK 445, +# define YYPOPSTACK 447, +# undef YYSTACK_RELOCATE548, + *++yyvsp yyvsp746, + *++yylsp yylsp748, + yyn 755, + yystate 757, + yystate 761, + goto yynewstate;763, + goto yyerrlab1;823, + yyerrstatus 846, + goto yyerrhandle;848, + yyn 861, + yystate 875, + yyn 895, + yyn 903, + *++yyvsp yyvsp919, + *++yylsp yylsp921, + yystate 924, + goto yynewstate;925, + yyresult 932, + goto yyreturn;933, + yyresult 939, + goto yyreturn;940, + yyresult 947, + +y-src/cccp.y,1107 +typedef unsigned char U_CHAR;38,1201 +struct arglist 41,1301 +#define NULL 51,1468 +#define GENERIC_PTR 56,1578 +#define GENERIC_PTR 58,1611 +#define NULL_PTR 63,1670 +int expression_value;68,1743 +static jmp_buf parse_return_error;70,1766 +static int keyword_parsing 73,1865 +#define CHAR_TYPE_SIZE 87,2162 +#define INT_TYPE_SIZE 91,2229 +#define LONG_TYPE_SIZE 95,2296 +#define WCHAR_TYPE_SIZE 99,2365 +#define possible_sum_sign(104,2556 + struct constant 112,2733 + struct name 113,2789 +start 143,3226 +exp1 148,3330 +exp 156,3505 +exp 185,4295 +keywords 306,7835 +static char *lexptr;lexptr332,8579 +parse_number 341,8842 +struct token 437,11038 +static struct token tokentab2[tokentab2442,11088 +yylex 459,11367 +parse_escape 740,17718 +yyerror 836,19599 +integer_overflow 844,19690 +left_shift 851,19804 +right_shift 873,20194 +parse_c_expression 893,20732 +main 923,21483 +unsigned char is_idchar[is_idchar948,21901 +unsigned char is_idstart[is_idstart950,21996 +char is_hor_space[is_hor_space953,22160 +initialize_random_junk 958,22259 +error 988,22915 +warning 993,22963 +lookup 999,23033 + +tex-src/nonewline.tex,0 + +php-src/sendmail.php,0 + +c-src/fail.c,0 + +a-src/empty.zz,0 diff --cc test/manual/etags/ETAGS.good_2 index 9eb1d4297c8,00000000000..ecfa7d19885 mode 100644,000000..100644 --- a/test/manual/etags/ETAGS.good_2 +++ b/test/manual/etags/ETAGS.good_2 @@@ -1,4938 -1,0 +1,4938 @@@ + +ada-src/etags-test-for.ada,1969 + type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0 + function Body_RequiredBody_Required/f3,78 + type Type_Specific_Data Type_Specific_Data/t11,280 + function "abs"abs/f19,504 + type Barrier_Function_Pointer Barrier_Function_Pointer/t21,577 + function "="=/f27,722 + type usfreelock_ptr usfreelock_ptr/t30,803 + function p p/f33,891 + procedure LL_Wrapper LL_Wrapper/p37,1054 +function p p/f39,1094 +package Pkg1 Pkg1/s44,1203 + type Private_T Private_T/t46,1220 + package Inner1 Inner1/s48,1250 + procedure Private_T;Private_T/p49,1270 + package Inner2 Inner2/s52,1310 + task Private_T;Private_T/k53,1330 + type Public_T Public_T/t56,1365 + procedure Pkg1_Proc1;Pkg1_Proc1/p62,1450 + procedure Pkg1_Proc2 Pkg1_Proc2/p64,1475 + function Pkg1_Func1 Pkg1_Func1/f66,1514 + function Pkg1_Func2 Pkg1_Func2/f68,1553 + package Pkg1_Pkg1 Pkg1_Pkg1/s71,1622 + procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p72,1645 + task type Task_Type Task_Type/k75,1694 + type Private_T Private_T/t82,1786 +package body Pkg1 Pkg1/b89,1882 + procedure Pkg1_Proc1 Pkg1_Proc1/p91,1904 + package body Inner1 Inner1/b96,1956 + procedure Private_T Private_T/p97,1981 + package body Inner2 Inner2/b103,2054 + task body Private_T Private_T/b104,2079 + task body Task_Type Task_Type/b112,2181 + procedure Pkg1_Proc2 Pkg1_Proc2/p126,2367 + function Pkg1_Func1 Pkg1_Func1/f132,2445 + function Pkg1_Func2 Pkg1_Func2/f134,2496 + package body Pkg1_Pkg1 Pkg1_Pkg1/b140,2596 +package body Pkg1_Pkg1 Pkg1_Pkg1/b146,2663 + procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p147,2689 +function Pkg1_Func1 Pkg1_Func1/f155,2778 +package Truc Truc/s162,2887 +package Truc.Bidule Truc.Bidule/s166,2929 + protected Bidule Bidule/t168,2953 + protected type Machin_T Machin_T/t172,3007 +package body Truc.Bidule Truc.Bidule/b178,3087 + protected body Bidule Bidule/b179,3115 + protected Machin_T Machin_T/t186,3207 + +ada-src/2ataspri.adb,2190 +package body System.Task_Primitives System.Task_Primitives/b64,2603 + package RTE RTE/s69,2712 + package TSL TSL/s70,2759 + function To_void_ptr To_void_ptr/f86,3287 + function To_TCB_Ptr To_TCB_Ptr/f89,3366 + function pthread_mutexattr_setprotocolpthread_mutexattr_setprotocol/f92,3444 + function pthread_mutexattr_setprio_ceilingpthread_mutexattr_setprio_ceiling/f99,3728 + procedure Abort_WrapperAbort_Wrapper/p115,4302 + procedure LL_Wrapper LL_Wrapper/p122,4526 + procedure Initialize_LL_Tasks Initialize_LL_Tasks/p131,4830 + function Self Self/f160,5586 + procedure Initialize_LockInitialize_Lock/p174,5958 + procedure Finalize_Lock Finalize_Lock/p210,6927 + procedure Write_Lock Write_Lock/p226,7338 + procedure Read_Lock Read_Lock/p239,7700 + procedure Unlock Unlock/p246,7850 + procedure Initialize_Cond Initialize_Cond/p258,8160 + procedure Finalize_Cond Finalize_Cond/p286,8979 + procedure Cond_Wait Cond_Wait/p300,9303 + procedure Cond_Timed_WaitCond_Timed_Wait/p312,9661 + procedure Cond_Signal Cond_Signal/p343,10510 + procedure Set_PrioritySet_Priority/p355,10836 + procedure Set_Own_Priority Set_Own_Priority/p372,11243 + function Get_Priority Get_Priority/f385,11598 + function Get_Own_Priority Get_Own_Priority/f398,12023 + procedure Create_LL_TaskCreate_LL_Task/p412,12438 + function To_Start_Addr To_Start_Addr/f426,12873 + procedure Exit_LL_Task Exit_LL_Task/p491,14995 + procedure Abort_Task Abort_Task/p500,15158 + procedure Test_Abort Test_Abort/p518,15716 + procedure Install_Abort_Handler Install_Abort_Handler/p527,15878 + procedure Abort_WrapperAbort_Wrapper/p557,16939 + function Address_To_Call_State Address_To_Call_State/f562,17062 + procedure Install_Error_Handler Install_Error_Handler/p573,17351 + procedure LL_Assert LL_Assert/p599,18146 + procedure LL_Wrapper LL_Wrapper/p608,18299 + procedure Initialize_TAS_Cell Initialize_TAS_Cell/p630,19010 + procedure Finalize_TAS_Cell Finalize_TAS_Cell/p635,19129 + procedure Clear Clear/p640,19236 + procedure Test_And_Set Test_And_Set/p645,19330 + function Is_Set Is_Set/f659,19676 + +ada-src/2ataspri.ads,2313 +package System.Task_Primitives System.Task_Primitives/s58,3169 + type LL_Task_Procedure_Access LL_Task_Procedure_Access/t62,3253 + type Pre_Call_State Pre_Call_State/t64,3331 + type Task_Storage_Size Task_Storage_Size/t66,3378 + type Machine_Exceptions Machine_Exceptions/t68,3433 + type Error_Information Error_Information/t70,3499 + type Lock Lock/t72,3569 + type Condition_Variable Condition_Variable/t73,3594 + type Task_Control_Block Task_Control_Block/t81,3955 + type TCB_Ptr TCB_Ptr/t89,4241 + function Address_To_TCB_Ptr Address_To_TCB_Ptr/f93,4333 + procedure Initialize_LL_Tasks Initialize_LL_Tasks/p96,4425 + function Self Self/f100,4602 + procedure Initialize_Lock Initialize_Lock/p103,4707 + procedure Finalize_Lock Finalize_Lock/p107,4879 + procedure Write_Lock Write_Lock/p111,5034 + procedure Read_Lock Read_Lock/p118,5428 + procedure Unlock Unlock/p128,5995 + procedure Initialize_Cond Initialize_Cond/p135,6300 + procedure Finalize_Cond Finalize_Cond/p138,6413 + procedure Cond_Wait Cond_Wait/p142,6591 + procedure Cond_Timed_WaitCond_Timed_Wait/p155,7396 + procedure Cond_Signal Cond_Signal/p164,7812 + procedure Set_Priority Set_Priority/p169,8040 + procedure Set_Own_Priority Set_Own_Priority/p173,8200 + function Get_Priority Get_Priority/f177,8348 + function Get_Own_Priority Get_Own_Priority/f181,8504 + procedure Create_LL_TaskCreate_LL_Task/p185,8647 + procedure Exit_LL_Task;Exit_LL_Task/p198,9282 + procedure Abort_Task Abort_Task/p203,9516 + procedure Test_Abort;Test_Abort/p210,9878 + type Abort_Handler_Pointer Abort_Handler_Pointer/t217,10233 + procedure Install_Abort_Handler Install_Abort_Handler/p219,10312 + procedure Install_Error_Handler Install_Error_Handler/p226,10741 + procedure LL_Assert LL_Assert/p231,10983 + type Proc Proc/t238,11240 + type TAS_Cell TAS_Cell/t242,11328 + procedure Initialize_TAS_Cell Initialize_TAS_Cell/p249,11670 + procedure Finalize_TAS_Cell Finalize_TAS_Cell/p255,11941 + procedure Clear Clear/p260,12157 + procedure Test_And_Set Test_And_Set/p267,12462 + function Is_Set Is_Set/f275,12877 + type Lock Lock/t283,13155 + type Condition_Variable Condition_Variable/t288,13267 + type TAS_Cell TAS_Cell/t293,13389 + +ada-src/waroquiers.ada,1503 +package Pkg1 Pkg1/s3,89 + type Private_T Private_T/t5,106 + package Inner1 Inner1/s7,136 + procedure Private_T;Private_T/p8,156 + package Inner2 Inner2/s11,196 + task Private_T;Private_T/k12,216 + type Public_T Public_T/t15,251 + procedure Pkg1_Proc1;Pkg1_Proc1/p21,336 + procedure Pkg1_Proc2 Pkg1_Proc2/p23,361 + function Pkg1_Func1 Pkg1_Func1/f25,400 + function Pkg1_Func2 Pkg1_Func2/f27,439 + package Pkg1_Pkg1 Pkg1_Pkg1/s30,508 + procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p31,531 + task type Task_Type Task_Type/k34,580 + type Private_T Private_T/t40,671 +package body Pkg1 Pkg1/b46,766 + procedure Pkg1_Proc1 Pkg1_Proc1/p48,788 + package body Inner1 Inner1/b53,840 + procedure Private_T Private_T/p54,865 + package body Inner2 Inner2/b60,938 + task body Private_T Private_T/b61,963 + task body Task_Type Task_Type/b68,1064 + procedure Pkg1_Proc2 Pkg1_Proc2/p82,1250 + function Pkg1_Func1 Pkg1_Func1/f88,1328 + function Pkg1_Func2 Pkg1_Func2/f90,1379 + package body Pkg1_Pkg1 Pkg1_Pkg1/b96,1479 +package body Pkg1_Pkg1 Pkg1_Pkg1/b100,1544 + procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p101,1570 +function Pkg1_Func1 Pkg1_Func1/f107,1657 +package Truc Truc/s112,1764 +package Truc.Bidule Truc.Bidule/s116,1816 + protected Bidule Bidule/t125,1964 + protected type Machin_T Machin_T/t131,2046 +package body Truc.Bidule Truc.Bidule/b138,2153 + protected body Bidule Bidule/b139,2181 + protected body Machin_T Machin_T/b146,2281 + +c-src/abbrev.c,1432 +Lisp_Object Vabbrev_table_name_list;43,1424 +Lisp_Object Vglobal_abbrev_table;48,1569 +Lisp_Object Vfundamental_mode_abbrev_table;52,1680 +int abbrevs_changed;56,1781 +int abbrev_all_caps;58,1803 +Lisp_Object Vabbrev_start_location;63,1952 +Lisp_Object Vabbrev_start_location_buffer;66,2041 +Lisp_Object Vlast_abbrev;70,2150 +Lisp_Object Vlast_abbrev_text;75,2319 +int last_abbrev_point;79,2409 +Lisp_Object Vpre_abbrev_expand_hook,83,2482 +Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2482 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2546 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2738 +DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3119 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev149,4438 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4809 +DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5277 +DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6241 +DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6756 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11677 +write_abbrev 426,12884 +describe_abbrev 445,13319 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description466,13834 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table506,14990 +syms_of_abbrev 540,16067 + +c-src/torture.c,197 +(*tag1 tag118,452 +#define notag2 26,553 +(*tag2 tag229,630 +(*tag3 tag339,772 +#define notag4 45,861 +(*tag4 tag448,955 +tag5 57,1081 +tag6 66,1208 +int pp1(74,1317 +pp287,1419 +pp3(100,1518 + +c-src/getopt.h,538 +#define _GETOPT_H 19,794 +extern char *optarg;optarg31,1102 +extern int optind;45,1610 +extern int opterr;50,1736 +struct option73,2790 +#define no_argument 89,3117 +#define required_argument 90,3140 +#define optional_argument 91,3168 +extern int getopt 98,3433 +extern int getopt 100,3537 +extern int getopt_long 102,3592 +extern int getopt_long_only 104,3724 +extern int _getopt_internal 109,3935 +extern int getopt 114,4133 +extern int getopt_long 115,4155 +extern int getopt_long_only 116,4182 +extern int _getopt_internal 118,4215 + +c-src/etags.c,12175 +char pot_etags_version[pot_etags_version81,3470 +# undef DEBUG84,3552 +# define DEBUG 85,3567 +# define DEBUG 87,3594 +# define NDEBUG 88,3617 +# define _GNU_SOURCE 94,3705 +# undef MSDOS100,3876 +# undef WINDOWSNT101,3890 +# define WINDOWSNT102,3909 +# undef MSDOS106,3968 +# define MSDOS 107,3982 +# define MSDOS 110,4032 +# define MAXPATHLEN 115,4111 +# undef HAVE_NTGUI116,4141 +# undef DOS_NT117,4160 +# define DOS_NT118,4176 +# undef assert 135,4482 +# define assert(136,4541 +# undef CTAGS146,4857 +# define CTAGS 147,4872 +# define CTAGS 149,4898 +#define streq(152,4927 +#define strcaseeq(153,4996 +#define strneq(154,5075 +#define strncaseeq(155,5151 +#define CHARS 157,5238 +#define CHAR(158,5278 +#define iswhite(159,5329 +#define notinname(160,5394 +#define begtoken(161,5469 +#define intoken(162,5542 +#define endtoken(163,5614 +#define ISALNUM(165,5684 +#define ISALPHA(166,5722 +#define ISDIGIT(167,5760 +#define ISLOWER(168,5798 +#define lowcase(170,5837 +#define xnew(179,6015 +#define xrnew(180,6083 +typedef void Lang_function 182,6164 +} compressor;188,6365 +} language;199,6835 +typedef struct fdesc201,6848 +} fdesc;212,7366 +typedef struct node_st214,7376 +} node;225,7894 +} linebuffer;239,8248 + at_language,245,8344 + at_regexp,246,8393 + at_filename,247,8437 + at_stdin,248,8473 + at_end 249,8516 +} argument;253,8698 +typedef struct regexp256,8758 +} regexp;268,9325 +static void Ada_funcs 274,9428 +static void Asm_labels 275,9460 +static void C_entries 276,9493 +static void default_C_entries 277,9536 +static void plain_C_entries 278,9576 +static void Cjava_entries 279,9614 +static void Cobol_paragraphs 280,9650 +static void Cplusplus_entries 281,9689 +static void Cstar_entries 282,9729 +static void Erlang_functions 283,9765 +static void Forth_words 284,9804 +static void Fortran_functions 285,9838 +static void HTML_labels 286,9878 +static void Lisp_functions 287,9912 +static void Lua_functions 288,9949 +static void Makefile_targets 289,9985 +static void Pascal_functions 290,10024 +static void Perl_functions 291,10063 +static void PHP_functions 292,10100 +static void PS_functions 293,10136 +static void Prolog_functions 294,10171 +static void Python_functions 295,10210 +static void Scheme_functions 296,10249 +static void TeX_commands 297,10288 +static void Texinfo_nodes 298,10323 +static void Yacc_entries 299,10359 +static void just_read_file 300,10394 +static language *get_language_from_langname get_language_from_langname302,10432 +static void readline 303,10492 +static long readline_internal 304,10537 +static bool nocase_tail 305,10591 +static void get_tag 306,10631 +static void analyze_regex 308,10671 +static void free_regexps 309,10707 +static void regex_tag_multiline 310,10740 +static void error 311,10780 +# undef STDIN408,15073 +#define STDIN 411,15095 +static compressor compressors[compressors457,17664 +static const char *Ada_suffixes Ada_suffixes473,17907 +static const char Ada_help 475,17977 +static const char *Asm_suffixes Asm_suffixes493,18580 +static const char Asm_help 504,18976 +static const char *default_C_suffixes default_C_suffixes512,19312 +static const char default_C_help 515,19413 +static const char default_C_help 523,19850 +static const char *Cplusplus_suffixes Cplusplus_suffixes535,20460 +static const char Cplusplus_help 540,20658 +static const char *Cjava_suffixes Cjava_suffixes549,21113 +static char Cjava_help 551,21172 +static const char *Cobol_suffixes Cobol_suffixes556,21337 +static char Cobol_help 558,21402 +static const char *Cstar_suffixes Cstar_suffixes562,21543 +static const char *Erlang_suffixes Erlang_suffixes565,21607 +static const char Erlang_help 567,21673 +const char *Forth_suffixes Forth_suffixes571,21799 +static const char Forth_help 573,21857 +static const char *Fortran_suffixes Fortran_suffixes577,22008 +static const char Fortran_help 579,22085 +static const char *HTML_suffixes HTML_suffixes582,22190 +static const char HTML_help 584,22264 +static const char *Lisp_suffixes Lisp_suffixes589,22452 +static const char Lisp_help 591,22556 +static const char *Lua_suffixes Lua_suffixes598,22871 +static const char Lua_help 600,22934 +static const char *Makefile_filenames Makefile_filenames603,23010 +static const char Makefile_help 605,23133 +static const char *Objc_suffixes Objc_suffixes609,23277 +static const char Objc_help 613,23399 +static const char *Pascal_suffixes Pascal_suffixes619,23714 +static const char Pascal_help 621,23778 +static const char *Perl_suffixes Perl_suffixes626,23966 +static const char *Perl_interpreters Perl_interpreters628,24028 +static const char Perl_help 630,24100 +static const char *PHP_suffixes PHP_suffixes637,24451 +static const char PHP_help 639,24523 +static const char *plain_C_suffixes plain_C_suffixes643,24678 +static const char *PS_suffixes PS_suffixes647,24762 +static const char PS_help 649,24848 +static const char *Prolog_suffixes Prolog_suffixes652,24931 +static const char Prolog_help 654,24993 +static const char *Python_suffixes Python_suffixes658,25107 +static const char Python_help 660,25165 +static const char *Scheme_suffixes Scheme_suffixes665,25347 +static const char Scheme_help 667,25460 +static const char *TeX_suffixes TeX_suffixes672,25683 +static const char TeX_help 674,25781 +static const char *Texinfo_suffixes Texinfo_suffixes686,26316 +static const char Texinfo_help 688,26395 +static const char *Yacc_suffixes Yacc_suffixes691,26492 +static const char Yacc_help 693,26606 +static const char auto_help 699,26856 +static const char none_help 703,27020 +static const char no_lang_help 707,27143 +static language lang_names 718,27355 +print_language_names 753,29532 +# define EMACS_NAME 786,30755 +# define VERSION 789,30811 +print_version 792,30869 +# define PRINT_UNDOCUMENTED_OPTIONS_HELP 804,31173 +print_help 808,31250 +main 981,37438 +get_compressor_from_suffix 1319,46217 +get_language_from_langname 1355,47158 +get_language_from_interpreter 1377,47545 +get_language_from_filename 1399,47976 +process_file_name 1433,48834 +process_file 1555,51665 +init 1632,54150 +find_entries 1656,54901 +make_tag 1814,59707 +pfnote 1856,60942 +free_tree 1917,62744 +free_fdesc 1935,63029 +add_node 1955,63472 +invalidate_nodes 2035,65537 +static int total_size_of_entries 2067,66150 +static int number_len 2068,66193 +total_size_of_entries 2087,66694 +put_entries 2107,67154 +#define C_EXT 2193,68995 +#define C_PLAIN 2194,69037 +#define C_PLPL 2195,69070 +#define C_STAR 2196,69104 +#define C_JAVA 2197,69137 +#define C_AUTO 2198,69172 +#define YACC 2199,69242 +enum sym_type2204,69312 + st_none,2206,69328 + st_C_objprot,2207,69339 + st_C_objprot, st_C_objimpl,2207,69339 + st_C_objprot, st_C_objimpl, st_C_objend,2207,69339 + st_C_gnumacro,2208,69382 + st_C_ignore,2209,69399 + st_C_ignore, st_C_attribute,2209,69399 + st_C_javastruct,2210,69430 + st_C_operator,2211,69449 + st_C_class,2212,69466 + st_C_class, st_C_template,2212,69466 + st_C_struct,2213,69495 + st_C_struct, st_C_extern,2213,69495 + st_C_struct, st_C_extern, st_C_enum,2213,69495 + st_C_struct, st_C_extern, st_C_enum, st_C_define,2213,69495 + st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef2213,69495 +struct C_stab_entry 2271,71278 +hash 2275,71409 +in_word_set 2321,72937 + TOTAL_KEYWORDS 2325,73018 + MIN_WORD_LENGTH 2326,73045 + MAX_WORD_LENGTH 2327,73072 + MIN_HASH_VALUE 2328,73100 + MAX_HASH_VALUE 2329,73126 +C_symtype 2387,74985 +static bool inattribute;2400,75234 + fvnone,2408,75435 + fdefunkey,2409,75466 + fdefunname,2410,75512 + foperator,2411,75556 + fvnameseen,2412,75613 + fstartlist,2413,75666 + finlist,2414,75722 + flistseen,2415,75765 + fignore,2416,75813 + vignore 2417,75856 +} fvdef;2418,75901 +static bool fvextern;2420,75911 + tnone,2428,76089 + tkeyseen,2429,76119 + ttypeseen,2430,76160 + tinbody,2431,76199 + tend,2432,76238 + tignore 2433,76279 +} typdef;2434,76320 + snone,2443,76499 + skeyseen,2445,76575 + stagseen,2446,76620 + scolonseen 2447,76661 +} structdef;2448,76715 +static const char *objtag objtag2453,76809 + dnone,2460,76942 + dsharpseen,2461,76972 + ddefineseen,2462,77025 + dignorerest 2463,77070 +} definedef;2464,77112 + onone,2472,77267 + oprotocol,2473,77297 + oimplementation,2474,77347 + otagseen,2475,77395 + oparenseen,2476,77431 + ocatseen,2477,77486 + oinbody,2478,77525 + omethodsign,2479,77568 + omethodtag,2480,77626 + omethodcolon,2481,77666 + omethodparm,2482,77709 + oignore 2483,77755 +} objdef;2484,77787 +static struct tok2491,77944 +} token;2508,78626 +static void pushclass_above 2514,78784 +static void popclass_above 2515,78832 +static void write_classname 2516,78866 +} cstack;2523,79136 +#define nestlev 2525,79264 +#define instruct 2527,79369 +pushclass_above 2531,79489 +popclass_above 2550,79948 +write_classname 2564,80162 +static bool consider_token 2592,80761 +static void make_C_tag 2593,80833 +consider_token 2613,81341 +} lbs[lbs2924,88532 +#define current_lb_is_new 2926,88543 +#define switch_line_buffers(2927,88588 +#define curlb 2929,88641 +#define newlb 2930,88672 +#define curlinepos 2931,88703 +#define newlinepos 2932,88744 +#define plainc 2934,88786 +#define cplpl 2935,88830 +#define cjava 2936,88861 +#define CNL_SAVE_DEFINEDEF(2938,88905 +#define CNL(2947,89117 +make_C_tag 2960,89375 +C_entries 2986,90194 +default_C_entries 3833,110156 +plain_C_entries 3840,110276 +Cplusplus_entries 3847,110364 +Cjava_entries 3854,110460 +Cstar_entries 3861,110550 +Yacc_entries 3868,110642 +#define LOOP_ON_INPUT_LINES(3875,110720 +#define LOOKING_AT(3884,111056 +#define LOOKING_AT_NOCASE(3891,111461 +just_read_file 3901,111861 +static void F_takeprec 3910,111965 +static void F_getit 3911,111996 +F_takeprec 3914,112039 +F_getit 3937,112366 +Fortran_functions 3961,112840 +Ada_getit 4052,114669 +Ada_funcs 4115,116044 +Asm_labels 4228,118582 +Perl_functions 4261,119549 +Python_functions 4357,122057 +PHP_functions 4387,122684 +Cobol_paragraphs 4466,124471 +Makefile_targets 4494,125029 +Pascal_functions 4529,125950 +static void L_getit 4706,130277 +L_getit 4709,130318 +Lisp_functions 4725,130664 +Lua_functions 4785,131850 +PS_functions 4811,132385 +Forth_words 4841,133053 +Scheme_functions 4877,134092 +static linebuffer *TEX_toktab TEX_toktab4908,134781 +static const char *TEX_defenv TEX_defenv4912,134974 +static void TEX_mode 4917,135172 +static void TEX_decode_env 4918,135203 +static char TEX_esc 4920,135261 +static char TEX_opgrp 4921,135289 +static char TEX_clgrp 4922,135318 +TeX_commands 4928,135395 +#define TEX_LESC 4986,136652 +#define TEX_SESC 4987,136674 +TEX_mode 4992,136804 +TEX_decode_env 5026,137509 +Texinfo_nodes 5071,138554 +HTML_labels 5094,139013 +static size_t prolog_pr 5214,142192 +static void prolog_skip_comment 5215,142234 +static size_t prolog_atom 5216,142290 +Prolog_functions 5219,142347 +prolog_skip_comment 5255,143128 +prolog_pr 5281,143736 +prolog_atom 5319,144628 +static int erlang_func 5374,145540 +static void erlang_attribute 5375,145581 +static int erlang_atom 5376,145620 +Erlang_functions 5379,145666 +erlang_func 5438,146965 +erlang_attribute 5476,147642 +erlang_atom 5496,148061 +static char *scan_separators scan_separators5520,148487 +static void add_regex 5521,148526 +static char *substitute substitute5522,148570 +scan_separators 5534,149080 +analyze_regex 5586,150460 +add_regex 5654,152050 +substitute 5767,154797 +free_regexps 5814,155837 +regex_tag_multiline 5836,156291 +nocase_tail 5913,158263 +get_tag 5928,158519 +readline_internal 5959,159455 +readline 6037,161296 +savestr 6230,167243 +savenstr 6240,167473 +skip_spaces 6249,167679 +skip_non_spaces 6258,167833 +skip_name 6267,167983 +fatal 6277,168156 +pfatal 6284,168253 +suggest_asking_for_help 6291,168332 +error 6300,168554 +concat 6313,168846 +etags_getcwd 6329,169259 +relative_filename 6350,169725 +absolute_filename 6389,170751 +absolute_dirname 6453,172416 +filename_is_absolute 6472,172845 +canonicalize_filename 6484,173096 +# define ISUPPER(6491,173235 +linebuffer_init 6514,173656 +linebuffer_setlen 6524,173887 +xmalloc 6536,174148 +xrealloc 6545,174314 + +c-src/exit.c,47 + } __libc_atexit;30,1017 +DEFUN(exit,38,1258 + +c-src/exit.strange_suffix,47 + } __libc_atexit;30,1017 +DEFUN(exit,38,1258 + +c-src/sysdep.h,491 +#define ENTRY(21,870 +#define PSEUDO(26,977 + movl $SYS_##syscall_nam$SYS_##syscall_na31,1137 + movl $SYS_##syscall_name, %eax;eax31,1137 + int $0x80;32,1185 + test %eax,eax33,1215 + test %eax, %eax;eax33,1215 + jl syscall_error;34,1250 +#define XCHG_0 47,1567 +#define XCHG_1 48,1611 +#define XCHG_2 49,1653 +#define XCHG_3 50,1696 +#define XCHG_4 51,1739 +#define XCHG_5 52,1782 +#define r0 54,1826 +#define r1 55,1880 +#define scratch 56,1937 +#define MOVE(57,2006 + +c-src/tab.c,196 +static int count_words(15,263 +static char *get_word(get_word35,553 +void tab_free(59,966 +char **tab_fill(tab_fill70,1129 +int tab_delete_first(91,1638 +int tab_count_words(103,1820 + +c-src/dostorture.c,198 +(*tag1 tag118,468 +#define notag2 26,577 +(*tag2 tag229,657 +(*tag3 tag339,809 +#define notag4 45,904 +(*tag4 tag448,1001 +tag5 57,1136 +tag6 66,1272 +int pp1(74,1389 +pp287,1504 +pp3(100,1616 + +c-src/emacs/src/gmalloc.c,6643 +#define USE_PTHREAD25,1002 +#undef get_current_dir_name33,1126 +extern void emacs_abort 47,1305 +#undef malloc64,2110 +#undef realloc65,2124 +#undef calloc66,2139 +#undef free67,2153 +#define malloc 68,2165 +#define realloc 69,2188 +#define calloc 70,2213 +#define aligned_alloc 71,2236 +#define free 72,2273 +extern void *bss_sbrk bss_sbrk76,2335 +extern int bss_sbrk_did_unexec;77,2375 +extern char bss_sbrk_buffer[bss_sbrk_buffer78,2407 +extern void *bss_sbrk_buffer_end;bss_sbrk_buffer_end79,2438 +#define DUMPED 80,2472 +#define ALLOCATED_BEFORE_DUMPING(81,2507 +extern void *malloc malloc94,2718 +#define INT_BIT 124,3934 +#define BLOCKLOG 125,3977 +#define BLOCKSIZE 126,4018 +#define BLOCKIFY(127,4052 +#define HEAP 131,4215 +#define FINAL_FREE_BLOCKS 135,4391 + } malloc_info;167,5388 +extern char *_heapbase;_heapbase170,5449 +extern malloc_info *_heapinfo;_heapinfo173,5541 +#define BLOCK(176,5620 +#define ADDRESS(177,5682 +extern size_t _heapindex;180,5797 +extern size_t _heaplimit;183,5866 +struct list186,5939 +extern struct list _fraghead[_fraghead193,6056 +struct alignlist196,6153 +extern struct alignlist *_aligned_blocks;_aligned_blocks202,6334 +extern size_t _chunks_used;205,6401 +extern size_t _bytes_used;206,6429 +extern size_t _chunks_free;207,6456 +extern size_t _bytes_free;208,6484 +extern void *_malloc_internal _malloc_internal213,6673 +extern void *_realloc_internal _realloc_internal214,6713 +extern void _free_internal 215,6762 +extern void *_malloc_internal_nolock _malloc_internal_nolock216,6799 +extern void *_realloc_internal_nolock _realloc_internal_nolock217,6846 +extern void _free_internal_nolock 218,6902 +extern pthread_mutex_t _malloc_mutex,221,6966 +extern pthread_mutex_t _malloc_mutex, _aligned_blocks_mutex;221,6966 +extern int _malloc_thread_enabled_p;222,7027 +#define LOCK(223,7064 +#define UNLOCK(228,7195 +#define LOCK_ALIGNED_BLOCKS(233,7329 +#define UNLOCK_ALIGNED_BLOCKS(238,7484 +#define LOCK(244,7649 +#define UNLOCK(245,7664 +#define LOCK_ALIGNED_BLOCKS(246,7681 +#define UNLOCK_ALIGNED_BLOCKS(247,7711 +extern void *malloc_find_object_address malloc_find_object_address252,7865 +extern void *(*__morecore)__morecore256,8021 +extern void *__default_morecore __default_morecore259,8105 +extern void (*__after_morecore_hook)__after_morecore_hook263,8269 +extern size_t __malloc_extra_blocks;267,8442 +extern int __malloc_initialized;270,8552 +extern int __malloc_initialize 272,8646 +extern void (*__malloc_initialize_hook)__malloc_initialize_hook275,8723 +extern void (*__free_hook)__free_hook276,8771 +extern void *(*__malloc_hook)__malloc_hook277,8811 +extern void *(*__realloc_hook)__realloc_hook278,8856 +extern void *(*__memalign_hook)__memalign_hook279,8913 +enum mcheck_status283,9092 + MCHECK_DISABLED 285,9115 + MCHECK_OK,286,9187 + MCHECK_FREE,287,9226 + MCHECK_HEAD,288,9270 + MCHECK_TAIL 289,9334 +extern int mcheck 296,9701 +extern enum mcheck_status mprobe 301,9952 +extern void mtrace 304,10055 +extern void muntrace 305,10082 +struct mstats308,10153 +extern struct mstats mstats 318,10518 +extern void memory_warnings 321,10625 +void *(*__malloc_hook)__malloc_hook352,11743 +char *_heapbase;_heapbase355,11829 +malloc_info *_heapinfo;_heapinfo358,11927 +static size_t heapsize;361,11983 +size_t _heapindex;364,12047 +size_t _heaplimit;367,12109 +struct list _fraghead[_fraghead370,12171 +size_t _chunks_used;373,12229 +size_t _bytes_used;374,12250 +size_t _chunks_free;375,12270 +size_t _bytes_free;376,12291 +int __malloc_initialized;379,12340 +size_t __malloc_extra_blocks;381,12367 +void (*__malloc_initialize_hook)__malloc_initialize_hook383,12398 +void (*__after_morecore_hook)__after_morecore_hook384,12439 +static int state_protected_p;400,12912 +static size_t last_state_size;401,12942 +static malloc_info *last_heapinfo;last_heapinfo402,12973 +protect_malloc_state 405,13014 +#define PROTECT_MALLOC_STATE(426,13627 +#define PROTECT_MALLOC_STATE(429,13697 +align 435,13794 +get_contiguous_space 466,14616 +register_heapinfo 497,15325 +pthread_mutex_t _malloc_mutex 517,15879 +pthread_mutex_t _aligned_blocks_mutex 518,15938 +int _malloc_thread_enabled_p;519,16005 +malloc_atfork_handler_prepare 522,16048 +malloc_atfork_handler_parent 529,16139 +malloc_atfork_handler_child 536,16233 +malloc_enable_thread 544,16375 +malloc_initialize_1 563,16961 +__malloc_initialize 594,17793 +static int morecore_recursing;604,17926 +morecore_nolock 609,18066 +_malloc_internal_nolock 722,21584 +_malloc_internal 920,28102 +malloc 932,28247 +extern void *_malloc _malloc956,29033 +extern void _free 957,29064 +extern void *_realloc _realloc958,29092 +_malloc 961,29140 +_free 967,29196 +_realloc 973,29240 +void (*__free_hook)__free_hook1001,30259 +struct alignlist *_aligned_blocks _aligned_blocks1004,30345 +_free_internal_nolock 1009,30474 +_free_internal 1255,38476 +free 1265,38603 +weak_alias 1277,38799 +#define min(1306,39813 +void *(*__realloc_hook)__realloc_hook1310,39898 +_realloc_internal_nolock 1319,40309 +_realloc_internal 1435,43563 +realloc 1447,43726 +calloc 1478,44894 +#define __sbrk 1513,46042 +extern void *__sbrk __sbrk1518,46247 +__default_morecore 1525,46511 +void *(*__memalign_hook)__memalign_hook1554,47456 +aligned_alloc 1557,47522 +memalign 1647,49704 +posix_memalign 1656,49909 +extern void *valloc valloc1695,51140 +extern int getpagesize 1700,51278 +static size_t pagesize;1703,51317 +valloc 1706,51349 +#undef malloc1715,51490 +#undef realloc1716,51504 +#undef calloc1717,51519 +#undef aligned_alloc1718,51533 +#undef free1719,51554 +extern void *malloc malloc1722,51609 +extern void *realloc realloc1723,51644 +extern void *calloc calloc1724,51691 +extern void free 1725,51740 +extern void *aligned_alloc aligned_alloc1727,51796 +extern int posix_memalign 1729,51890 +hybrid_malloc 1736,52083 +hybrid_calloc 1744,52188 +hybrid_free 1752,52319 +hybrid_aligned_alloc 1765,52626 +hybrid_realloc 1780,52984 +char *gget_current_dir_name gget_current_dir_name1808,53753 +hybrid_get_current_dir_name 1811,53797 +static void (*old_free_hook)old_free_hook1846,54921 +static void *(*old_malloc_hook)old_malloc_hook1847,54963 +static void *(*old_realloc_hook)old_realloc_hook1848,55010 +static void (*abortfunc)abortfunc1851,55124 +#define MAGICWORD 1854,55206 +#define MAGICFREE 1855,55261 +#define MAGICBYTE 1856,55316 +#define MALLOCFLOOD 1857,55348 +#define FREEFLOOD 1858,55382 +struct hdr1860,55415 +checkhdr 1867,55581 +freehook 1891,56022 +mallochook 1927,56804 +reallochook 1944,57143 +mabort 1978,57901 +static int mcheck_used 2012,58586 +mcheck 2015,58619 +mprobe 2035,59138 + +c-src/emacs/src/regex.h,4576 +#define _REGEX_H 21,836 +typedef unsigned long reg_syntax_t;43,1577 +#define RE_BACKSLASH_ESCAPE_IN_LISTS 47,1749 +#define RE_BK_PLUS_QM 52,1969 +#define RE_CHAR_CLASSES 58,2298 +#define RE_CONTEXT_INDEP_ANCHORS 72,3032 +#define RE_CONTEXT_INDEP_OPS 80,3458 +#define RE_CONTEXT_INVALID_OPS 84,3658 +#define RE_DOT_NEWLINE 88,3801 +#define RE_DOT_NOT_NULL 92,3937 +#define RE_HAT_LISTS_NOT_NEWLINE 96,4082 +#define RE_INTERVALS 101,4292 +#define RE_LIMITED_OPS 105,4441 +#define RE_NEWLINE_ALT 109,4583 +#define RE_NO_BK_BRACES 114,4773 +#define RE_NO_BK_PARENS 118,4964 +#define RE_NO_BK_REFS 122,5120 +#define RE_NO_BK_VBAR 126,5316 +#define RE_NO_EMPTY_RANGES 132,5610 +#define RE_UNMATCHED_RIGHT_PAREN_ORD 136,5766 +#define RE_NO_POSIX_BACKTRACKING 140,5937 +#define RE_NO_GNU_OPS 144,6133 +#define RE_FRUGAL 147,6253 +#define RE_SHY_GROUPS 150,6360 +#define RE_NO_NEWLINE_ANCHOR 153,6468 +#define RE_DEBUG 161,6884 +extern reg_syntax_t re_syntax_options;167,7170 +extern Lisp_Object re_match_object;172,7344 +extern size_t re_max_failures;176,7454 +#define RE_SYNTAX_EMACS 183,7684 +#define RE_SYNTAX_AWK 186,7780 +#define RE_SYNTAX_GNU_AWK 193,8084 +#define RE_SYNTAX_POSIX_AWK 197,8255 +#define RE_SYNTAX_GREP 201,8393 +#define RE_SYNTAX_EGREP 206,8549 +#define RE_SYNTAX_POSIX_EGREP 212,8765 +#define RE_SYNTAX_ED 216,8910 +#define RE_SYNTAX_SED 218,8954 +#define _RE_SYNTAX_POSIX_COMMON 221,9072 +#define RE_SYNTAX_POSIX_BASIC 225,9215 +#define RE_SYNTAX_POSIX_MINIMAL_BASIC 231,9508 +#define RE_SYNTAX_POSIX_EXTENDED 234,9598 +#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED 242,9967 +# undef RE_DUP_MAX253,10454 +#define RE_DUP_MAX 256,10540 +#define REG_EXTENDED 263,10762 +#define REG_ICASE 267,10886 +#define REG_NEWLINE 272,11070 +#define REG_NOSUB 276,11248 +#define REG_NOTBOL 286,11614 +#define REG_NOTEOL 289,11688 + REG_ENOSYS 297,11859 + REG_NOERROR 300,11941 + REG_NOMATCH,301,11976 + REG_BADPAT,305,12123 + REG_ECOLLATE,306,12162 + REG_ECTYPE,307,12203 + REG_EESCAPE,308,12255 + REG_ESUBREG,309,12298 + REG_EBRACK,310,12345 + REG_EPAREN,311,12391 + REG_EBRACE,312,12436 + REG_BADBR,313,12472 + REG_ERANGE,314,12519 + REG_ESPACE,315,12560 + REG_BADRPT,316,12601 + REG_EEND,319,12693 + REG_ESIZE,320,12728 + REG_ERPAREN,321,12790 + REG_ERANGEX 322,12859 +} reg_errcode_t;323,12911 +# define RE_TRANSLATE_TYPE 332,13273 +struct re_pattern_buffer335,13315 +#define REGS_UNALLOCATED 376,14889 +#define REGS_REALLOCATE 377,14916 +#define REGS_FIXED 378,14942 +typedef struct re_pattern_buffer regex_t;416,16098 +typedef ssize_t regoff_t;423,16492 +struct re_registers428,16652 +# define RE_NREGS 440,16942 +} regmatch_t;451,17317 +extern reg_syntax_t re_set_syntax 457,17512 +extern const char *re_compile_pattern re_compile_pattern462,17776 +extern int re_compile_fastmap 469,18058 +extern regoff_t re_search 477,18466 +extern regoff_t re_search_2 485,18781 +extern regoff_t re_match 495,19177 +extern regoff_t re_match_2 501,19407 +extern void re_set_registers 520,20197 +extern char *re_comp re_comp528,20469 +extern int re_exec 529,20506 +# define _Restrict_ 540,20886 +# define _Restrict_ 542,20979 +# define _Restrict_544,21018 +# define _Restrict_arr_ 555,21418 +# define _Restrict_arr_557,21461 +extern reg_errcode_t regcomp 562,21530 +extern reg_errcode_t regexec 566,21656 +extern size_t regerror 571,21850 +extern void regfree 574,21956 +# define CHAR_CLASS_MAX_LENGTH 593,22470 +# define CHAR_CLASS_MAX_LENGTH 597,22648 +typedef wctype_t re_wctype_t;599,22692 +typedef wchar_t re_wchar_t;600,22722 +# define re_wctype 601,22750 +# define re_iswctype 602,22776 +# define re_wctype_to_bit(603,22806 +# define CHAR_CLASS_MAX_LENGTH 605,22844 +# define btowc(606,22906 +typedef enum { RECC_ERROR 609,22953 + RECC_ALNUM,610,22984 + RECC_ALNUM, RECC_ALPHA,610,22984 + RECC_ALNUM, RECC_ALPHA, RECC_WORD,610,22984 + RECC_GRAPH,611,23027 + RECC_GRAPH, RECC_PRINT,611,23027 + RECC_LOWER,612,23059 + RECC_LOWER, RECC_UPPER,612,23059 + RECC_PUNCT,613,23091 + RECC_PUNCT, RECC_CNTRL,613,23091 + RECC_DIGIT,614,23123 + RECC_DIGIT, RECC_XDIGIT,614,23123 + RECC_BLANK,615,23156 + RECC_BLANK, RECC_SPACE,615,23156 + RECC_MULTIBYTE,616,23188 + RECC_MULTIBYTE, RECC_NONASCII,616,23188 + RECC_ASCII,617,23227 + RECC_ASCII, RECC_UNIBYTE617,23227 +} re_wctype_t;618,23260 +extern char re_iswctype 620,23276 +extern re_wctype_t re_wctype 621,23329 +typedef int re_wchar_t;623,23387 +extern void re_set_whitespace_regexp 625,23412 + +c-src/emacs/src/keyboard.c,15493 +volatile int interrupt_input_blocked;76,1808 +volatile bool pending_signals;80,1944 +#define KBD_BUFFER_SIZE 82,1976 +KBOARD *initial_kboard;initial_kboard84,2006 +KBOARD *current_kboard;current_kboard85,2030 +static KBOARD *all_kboards;all_kboards86,2054 +static bool single_kboard;89,2154 +#define NUM_RECENT_KEYS 91,2182 +static int recent_keys_index;94,2269 +static int total_keys;97,2357 +static Lisp_Object recent_keys;100,2443 +Lisp_Object this_command_keys;107,2777 +ptrdiff_t this_command_key_count;108,2808 +static bool this_command_key_count_reset;112,2922 +static Lisp_Object raw_keybuf;116,3074 +static int raw_keybuf_count;117,3105 +#define GROW_RAW_KEYBUF 119,3135 +static ptrdiff_t this_single_command_key_start;125,3350 +static ptrdiff_t before_command_key_count;129,3498 +static ptrdiff_t before_command_echo_length;130,3541 +sigjmp_buf return_to_command_loop;135,3677 +static Lisp_Object recover_top_level_message;138,3791 +static Lisp_Object regular_top_level_message;143,3930 +static sys_jmp_buf getcjmp;147,4031 +bool waiting_for_input;150,4095 +static bool echoing;154,4186 +static struct kboard *ok_to_echo_at_next_pause;ok_to_echo_at_next_pause159,4328 +struct kboard *echo_kboard;echo_kboard166,4632 +Lisp_Object echo_message_buffer;171,4744 +bool immediate_quit;174,4837 +int quit_char;192,5623 +EMACS_INT command_loop_level;195,5680 +Lisp_Object unread_switch_frame;204,6108 +static ptrdiff_t last_non_minibuf_size;207,6216 +uintmax_t num_input_events;210,6334 +static EMACS_INT last_auto_save;214,6428 +static ptrdiff_t last_point_position;217,6523 +Lisp_Object internal_last_event_frame;228,7028 +static Lisp_Object read_key_sequence_cmd;232,7168 +static Lisp_Object read_key_sequence_remapped;233,7210 +static FILE *dribble;dribble236,7310 +bool input_pending;239,7368 +static bool input_was_pending;287,10022 +static struct input_event kbd_buffer[kbd_buffer291,10107 +static struct input_event *kbd_fetch_ptr;kbd_fetch_ptr297,10386 +static struct input_event * volatile kbd_store_ptr;302,10601 +static void recursive_edit_unwind 313,11088 +static Lisp_Object command_loop 314,11144 +static void echo_now 316,11185 +static ptrdiff_t echo_length 317,11214 +unsigned timers_run;320,11296 +struct timespec *input_available_clear_time;input_available_clear_time324,11408 +bool interrupt_input;328,11573 +bool interrupts_deferred;331,11671 +static struct timespec timer_idleness_start_time;335,11746 +static struct timespec timer_last_idleness_start_time;340,11916 +#define READABLE_EVENTS_DO_TIMERS_NOW 346,12046 +#define READABLE_EVENTS_FILTER_EVENTS 347,12094 +#define READABLE_EVENTS_IGNORE_SQUEEZABLES 348,12142 +static void (*keyboard_init_hook)keyboard_init_hook351,12264 +static bool get_input_pending 353,12307 +static bool readable_events 354,12344 +static Lisp_Object read_char_x_menu_prompt 355,12379 +static Lisp_Object read_char_minibuf_menu_prompt 357,12502 +static Lisp_Object make_lispy_event 358,12571 +static Lisp_Object make_lispy_movement 359,12631 +static Lisp_Object modify_event_symbol 363,12840 +static Lisp_Object make_lispy_switch_frame 366,13050 +static Lisp_Object make_lispy_focus_in 367,13108 +static Lisp_Object make_lispy_focus_out 369,13188 +static bool help_char_p 371,13275 +static void save_getcjmp 372,13314 +static void restore_getcjmp 373,13354 +static Lisp_Object apply_modifiers 374,13397 +static void clear_event 375,13452 +static void restore_kboard_configuration 376,13500 +static void deliver_input_available_signal 378,13568 +static void handle_interrupt 380,13631 +static _Noreturn void quit_throw_to_read_char 381,13668 +static void process_special_events 382,13722 +static void timer_start_idle 383,13765 +static void timer_stop_idle 384,13802 +static void timer_resume_idle 385,13838 +static void deliver_user_signal 386,13876 +static char *find_user_signal_name find_user_signal_name387,13915 +static void store_user_signal_events 388,13957 +kset_echo_string 392,14088 +kset_kbd_queue 397,14184 +kset_keyboard_translate_table 402,14276 +kset_last_prefix_arg 407,14399 +kset_last_repeatable_command 412,14504 +kset_local_function_key_map 417,14625 +kset_overriding_terminal_local_map 422,14744 +kset_real_last_command 427,14877 +kset_system_key_syms 432,14986 +echo_add_key 443,15249 +echo_char 527,17527 +echo_dash 541,17813 +echo_now 586,19140 +cancel_echoing 635,20614 +echo_length 648,20922 +echo_truncate 660,21253 +add_command_key 672,21582 +recursive_edit_1 697,22406 +record_auto_save 742,23848 +force_auto_save_soon 751,24016 +DEFUN ("recursive-edit", Frecursive_edit,recursive-edit759,24137 +recursive_edit_unwind 804,25747 +any_kboard_state 817,26013 +single_kboard_state 838,26665 +not_single_kboard_state 848,26803 +struct kboard_stack858,27065 +static struct kboard_stack *kboard_stack;kboard_stack864,27138 +push_kboard 867,27186 +pop_kboard 879,27375 +temporarily_switch_to_single_kboard 914,28263 +record_single_kboard_state 943,29437 +restore_kboard_configuration 952,29621 +cmd_error 970,30077 +cmd_error_internal 1024,31510 +DEFUN ("command-error-default-function", Fcommand_error_default_function,command-error-default-function1043,32030 +static Lisp_Object command_loop_2 1086,33637 +static Lisp_Object top_level_1 1087,33686 +command_loop 1094,33916 +command_loop_2 1134,35135 +top_level_2 1146,35339 +top_level_1 1152,35417 +DEFUN ("top-level", Ftop_level,top-level1164,35787 +user_error 1183,36288 +DEFUN ("exit-recursive-edit", Fexit_recursive_edit,exit-recursive-edit1189,36429 +DEFUN ("abort-recursive-edit", Fabort_recursive_edit,abort-recursive-edit1201,36819 +tracking_off 1216,37281 +DEFUN ("internal--track-mouse", Ftrack_mouse,track-mouse1234,37816 +bool ignore_mouse_drag_p;1256,38392 +some_mouse_moved 1259,38441 +static int read_key_sequence 1282,38799 +static void adjust_point_for_property 1284,38917 +Lisp_Object last_undo_boundary;1287,39032 +command_loop_1 1294,39273 +read_menu_command 1649,50889 +adjust_point_for_property 1678,51617 +safe_run_hooks_1 1831,57339 +safe_run_hooks_error 1841,57569 +safe_run_hook_funcall 1878,58576 +safe_run_hooks 1893,59058 +int poll_suppress_count;1908,59397 +static struct atimer *poll_timer;poll_timer1915,59487 +poll_for_input_1 1919,59589 +poll_for_input 1930,59789 +start_polling 1942,60053 +input_polling_used 1979,61091 +stop_polling 1994,61390 +set_poll_suppress_count 2009,61759 +bind_polling_period 2029,62141 +make_ctrl_char 2048,62492 +show_help_echo 2113,64455 +static Lisp_Object kbd_buffer_get_event 2152,65484 +static void record_char 2154,65596 +static Lisp_Object help_form_saved_window_configs;2156,65638 +read_char_help_form_unwind 2158,65701 +#define STOP_POLLING 2166,65959 +#define RESUME_POLLING 2170,66084 +read_event_from_main_queue 2175,66229 +read_decoded_event_from_main_queue 2249,68417 +#define MAX_ENCODED_BYTES 2254,68664 +echo_keystrokes_p 2342,71556 +read_char 2376,72848 +record_menu_key 3225,98949 +help_char_p 3258,99674 +record_char 3273,99953 +save_getcjmp 3412,104235 +restore_getcjmp 3418,104326 +readable_events 3430,104697 +int stop_character EXTERNALLY_VISIBLE;3497,106437 +event_to_kboard 3500,106493 +kbd_buffer_nr_stored 3522,107142 +kbd_buffer_store_event 3534,107483 +kbd_buffer_store_event_hold 3550,108025 +kbd_buffer_unget_event 3684,111617 +#define INPUT_EVENT_POS_MAX 3698,112018 +#define INPUT_EVENT_POS_MIN 3701,112147 +position_to_Time 3706,112287 +Time_to_position 3716,112514 +gen_help_event 3738,113171 +kbd_buffer_store_help_event 3756,113611 +discard_mouse_events 3773,113976 +kbd_buffer_events_waiting 3803,114711 +clear_event 3823,115068 +kbd_buffer_get_event 3836,115408 +process_special_events 4258,127881 +swallow_events 4322,129705 +timer_start_idle 4339,130098 +timer_stop_idle 4355,130576 +timer_resume_idle 4363,130720 +struct input_event last_timer_event EXTERNALLY_VISIBLE;4372,130912 +Lisp_Object pending_funcalls;4377,131172 +decode_timer 4381,131293 +timer_check_2 4414,132246 +timer_check 4572,136817 +DEFUN ("current-idle-time", Fcurrent_idle_time,current-idle-time4607,137662 +static Lisp_Object accent_key_syms;4625,138239 +static Lisp_Object func_key_syms;4626,138275 +static Lisp_Object mouse_syms;4627,138309 +static Lisp_Object wheel_syms;4628,138340 +static Lisp_Object drag_n_drop_syms;4629,138371 +static const int lispy_accent_codes[lispy_accent_codes4634,138516 +static const char *const lispy_accent_keys[lispy_accent_keys4741,139878 +#define FUNCTION_KEY_OFFSET 4766,140314 +const char *const lispy_function_keys[lispy_function_keys4768,140347 +static const char *const lispy_multimedia_keys[lispy_multimedia_keys4962,148901 +static const char *const lispy_kana_keys[lispy_kana_keys5026,150135 +#define FUNCTION_KEY_OFFSET 5061,151751 +static const char *const lispy_function_keys[lispy_function_keys5065,151894 +#define ISO_FUNCTION_KEY_OFFSET 5149,154429 +static const char *const iso_lispy_function_keys[iso_lispy_function_keys5151,154469 +static Lisp_Object Vlispy_mouse_stem;5172,155328 +static const char *const lispy_wheel_names[lispy_wheel_names5174,155367 +static const char *const lispy_drag_n_drop_names[lispy_drag_n_drop_names5181,155619 +static short const scroll_bar_parts[scroll_bar_parts5189,155885 +static Lisp_Object button_down_location;5210,156910 +static int last_mouse_button;5215,157065 +static int last_mouse_x;5216,157095 +static int last_mouse_y;5217,157120 +static Time button_down_time;5218,157145 +static int double_click_count;5222,157229 +make_lispy_position 5228,157390 +toolkit_menubar_in_use 5456,163953 +make_scroll_bar_position 5469,164321 +make_lispy_event 5485,164967 +make_lispy_movement 6104,183531 +make_lispy_switch_frame 6131,184262 +make_lispy_focus_in 6137,184369 +make_lispy_focus_out 6145,184495 +parse_modifiers_uncached 6163,184945 +#define SINGLE_LETTER_MOD(6185,185465 +#undef SINGLE_LETTER_MOD6212,185906 +#define MULTI_LETTER_MOD(6214,185932 +#undef MULTI_LETTER_MOD6231,186400 +apply_modifiers_uncached 6273,187574 +static const char *const modifier_names[modifier_names6319,189193 +#define NUM_MOD_NAMES 6325,189399 +static Lisp_Object modifier_symbols;6327,189449 +lispy_modifier_list 6331,189586 +#define KEY_TO_CHAR(6353,190252 +parse_modifiers 6356,190328 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517 +apply_modifiers 6422,192391 +reorder_modifiers 6491,194720 +modify_event_symbol 6536,196528 +DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199244 +parse_solitary_modifier 6695,201135 +#define SINGLE_LETTER_MOD(6701,201258 +#define MULTI_LETTER_MOD(6705,201343 +#undef SINGLE_LETTER_MOD6763,202641 +#undef MULTI_LETTER_MOD6764,202666 +lucid_event_type_list_p 6775,202889 +get_input_pending 6814,203960 +record_asynch_buffer_change 6834,204579 +gobble_input 6872,205702 +tty_read_avail_input 6967,208310 +handle_async_input 7149,214039 +process_pending_signals 7165,214359 +unblock_input_to 7177,214645 +unblock_input 7200,215277 +totally_unblock_input 7209,215445 +handle_input_available_signal 7217,215529 +deliver_input_available_signal 7226,215700 +struct user_signal_info7235,215865 +static struct user_signal_info *user_signals user_signals7250,216090 +add_user_signal 7253,216149 +handle_user_signal 7275,216598 +deliver_user_signal 7316,217558 +find_user_signal_name 7322,217659 +store_user_signal_events 7334,217841 +static void menu_bar_item 7362,218341 +static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416 +static Lisp_Object menu_bar_items_vector;7368,218630 +static int menu_bar_items_index;7369,218672 +static const char *separator_names[separator_names7372,218707 +menu_separator_name_p 7393,219148 +menu_bar_items 7426,219852 +Lisp_Object item_properties;7568,224603 +menu_bar_item 7571,224645 +menu_item_eval_property_1 7647,227175 +eval_dyn 7658,227465 +menu_item_eval_property 7666,227675 +parse_menu_item 7686,228341 +static Lisp_Object tool_bar_items_vector;7965,236336 +static Lisp_Object tool_bar_item_properties;7970,236510 +static int ntool_bar_items;7974,236606 +static void init_tool_bar_items 7978,236664 +static void process_tool_bar_item 7979,236711 +static bool parse_tool_bar_item 7981,236801 +static void append_tool_bar_item 7982,236861 +tool_bar_items 7990,237083 +process_tool_bar_item 8075,239892 +#define PROP(8112,240969 +set_prop 8114,241038 +parse_tool_bar_item 8167,242453 +#undef PROP8379,248844 +init_tool_bar_items 8387,248969 +append_tool_bar_item 8401,249261 +read_char_x_menu_prompt 8443,250771 +read_char_minibuf_menu_prompt 8503,252445 +#define PUSH_C_STR(8527,253014 +follow_key 8726,258553 +active_maps 8733,258695 +typedef struct keyremap8742,259021 +} keyremap;8754,259464 +access_keymap_keyremap 8764,259808 +keyremap_step 8811,261450 +test_undefined 8867,262934 +read_key_sequence 8916,264861 +read_key_sequence_vs 9826,295821 +DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299982 +detect_input_pending 9950,300488 +detect_input_pending_ignore_squeezables 9959,300654 +detect_input_pending_run_timers 9967,300870 +clear_input_pending 9985,301362 +requeued_events_pending_p 9997,301732 +DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813 +DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596 +DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303958 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304380 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305495 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306510 +DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069 +DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406 +DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447 +DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949 +stuff_buffered_input 10285,311045 +set_waiting_for_input 10323,312016 +clear_waiting_for_input 10337,312390 +handle_interrupt_signal 10351,312754 +deliver_interrupt_signal 10378,313642 +static int volatile force_quit_count;10387,313932 +handle_interrupt 10401,314414 +quit_throw_to_read_char 10541,318711 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288 +DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320516 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321432 +DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706 +DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570 +DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324459 +DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837 +DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060 +init_kboard 10861,328214 +allocate_kboard 10893,329284 +wipe_kboard 10909,329637 +delete_kboard 10917,329751 +init_keyboard 10942,330281 +struct event_head11021,332696 +static const struct event_head head_table[head_table11027,332747 +syms_of_keyboard 11045,333577 +keys_of_keyboard 11841,367115 +mark_kboards 11916,370434 + +c-src/emacs/src/lisp.h,33973 +#define EMACS_LISP_H22,800 +#define DECLARE_GDB_SYM(47,1421 +# define DEFINE_GDB_SYMBOL_BEGIN(49,1508 +# define DEFINE_GDB_SYMBOL_END(50,1578 +# define DEFINE_GDB_SYMBOL_BEGIN(52,1625 +# define DEFINE_GDB_SYMBOL_END(53,1702 +#undef min57,1790 +#undef max58,1801 +#define max(59,1812 +#define min(60,1854 +#define ARRAYELTS(63,1936 +#define GCTYPEBITS 67,2079 +DEFINE_GDB_SYMBOL_BEGIN GCTYPEBITS66,2037 +# define NONPOINTER_BITS 78,2567 +# define NONPOINTER_BITS 80,2600 +typedef int EMACS_INT;91,3023 +typedef unsigned int EMACS_UINT;92,3046 +# define EMACS_INT_MAX 93,3079 +# define pI 94,3111 +typedef long int EMACS_INT;96,3203 +typedef unsigned long EMACS_UINT;97,3231 +# define EMACS_INT_MAX 98,3265 +# define pI 99,3298 +typedef long long int EMACS_INT;103,3477 +typedef unsigned long long int EMACS_UINT;104,3510 +# define EMACS_INT_MAX 105,3553 +# define pI 106,3587 +enum { BOOL_VECTOR_BITS_PER_CHAR 114,3804 +#define BOOL_VECTOR_BITS_PER_CHAR 115,3840 +typedef size_t bits_word;123,4165 +# define BITS_WORD_MAX 124,4191 +enum { BITS_PER_BITS_WORD 125,4223 +typedef unsigned char bits_word;127,4290 +# define BITS_WORD_MAX 128,4323 +enum { BITS_PER_BITS_WORD 129,4386 +verify 131,4450 + BITS_PER_CHAR 136,4570 + BITS_PER_SHORT 137,4605 + BITS_PER_LONG 138,4657 + BITS_PER_EMACS_INT 139,4712 +typedef intmax_t printmax_t;148,5089 +typedef uintmax_t uprintmax_t;149,5118 +# define pMd 150,5149 +# define pMu 151,5170 +typedef EMACS_INT printmax_t;153,5197 +typedef EMACS_UINT uprintmax_t;154,5227 +# define pMd 155,5259 +# define pMu 156,5278 +# define pD 165,5664 +# define pD 167,5709 +# define pD 169,5756 +# define pD 171,5779 +# define eassert(200,7062 +# define eassume(201,7140 +extern _Noreturn void die 204,7206 +extern bool suppress_checking EXTERNALLY_VISIBLE;206,7268 +# define eassert(208,7319 +# define eassume(212,7450 +enum Lisp_Bits239,8519 +#define GCALIGNMENT 243,8647 + VALBITS 246,8742 + INTTYPEBITS 249,8838 + FIXNUM_BITS 252,8945 +#define VAL_MAX 263,9327 +#define USE_LSB_TAG 271,9777 +DEFINE_GDB_SYMBOL_BEGIN USE_LSB_TAG270,9733 +# define alignas(281,10077 +# define GCALIGNED 288,10227 +# define GCALIGNED 290,10292 +# define lisp_h_XLI(327,11642 +# define lisp_h_XIL(328,11673 +# define lisp_h_XLI(330,11724 +# define lisp_h_XIL(331,11751 +#define lisp_h_CHECK_LIST_CONS(333,11785 +#define lisp_h_CHECK_NUMBER(334,11856 +#define lisp_h_CHECK_SYMBOL(335,11927 +#define lisp_h_CHECK_TYPE(336,11996 +#define lisp_h_CONSP(338,12107 +#define lisp_h_EQ(339,12156 +#define lisp_h_FLOATP(340,12201 +#define lisp_h_INTEGERP(341,12252 +#define lisp_h_MARKERP(342,12333 +#define lisp_h_MISCP(343,12408 +#define lisp_h_NILP(344,12457 +#define lisp_h_SET_SYMBOL_VAL(345,12493 +#define lisp_h_SYMBOL_CONSTANT_P(347,12607 +#define lisp_h_SYMBOL_VAL(348,12671 +#define lisp_h_SYMBOLP(350,12772 +#define lisp_h_VECTORLIKEP(351,12825 +#define lisp_h_XCAR(352,12886 +#define lisp_h_XCDR(353,12924 +#define lisp_h_XCONS(354,12964 +#define lisp_h_XHASH(356,13059 +#define lisp_h_XPNTR(357,13093 +# define lisp_h_check_cons_list(360,13221 +# define lisp_h_make_number(363,13289 +# define lisp_h_XFASTINT(365,13392 +# define lisp_h_XINT(366,13429 +# define lisp_h_XSYMBOL(367,13478 +# define lisp_h_XTYPE(371,13631 +# define lisp_h_XUNTAG(372,13696 +# define XLI(381,14086 +# define XIL(382,14117 +# define CHECK_LIST_CONS(383,14148 +# define CHECK_NUMBER(384,14209 +# define CHECK_SYMBOL(385,14258 +# define CHECK_TYPE(386,14307 +# define CONSP(387,14382 +# define EQ(388,14417 +# define FLOATP(389,14452 +# define INTEGERP(390,14489 +# define MARKERP(391,14530 +# define MISCP(392,14569 +# define NILP(393,14604 +# define SET_SYMBOL_VAL(394,14637 +# define SYMBOL_CONSTANT_P(395,14700 +# define SYMBOL_VAL(396,14763 +# define SYMBOLP(397,14812 +# define VECTORLIKEP(398,14851 +# define XCAR(399,14898 +# define XCDR(400,14931 +# define XCONS(401,14964 +# define XHASH(402,14999 +# define XPNTR(403,15034 +# define check_cons_list(405,15097 +# define make_number(408,15176 +# define XFASTINT(409,15224 +# define XINT(410,15266 +# define XSYMBOL(411,15300 +# define XTYPE(412,15340 +# define XUNTAG(413,15376 +#define LISP_MACRO_DEFUN(421,15672 +#define LISP_MACRO_DEFUN_VOID(425,15845 +#define INTMASK 437,16289 +#define case_Lisp_Int 438,16342 +#define ENUM_BF(445,16681 +#define ENUM_BF(447,16722 +enum Lisp_Type451,16763 + Lisp_Symbol 454,16851 + Lisp_Misc 458,16993 + Lisp_Int0 461,17067 + Lisp_Int1 462,17086 + Lisp_String 466,17264 + Lisp_Vectorlike 472,17543 + Lisp_Cons 475,17632 + Lisp_Float 477,17670 +enum Lisp_Misc_Type485,18016 + Lisp_Misc_Free 487,18040 + Lisp_Misc_Marker,488,18069 + Lisp_Misc_Overlay,489,18091 + Lisp_Misc_Save_Value,490,18114 + Lisp_Misc_Finalizer,491,18140 + Lisp_Misc_Float,494,18275 + Lisp_Misc_Limit496,18359 +enum Lisp_Fwd_Type502,18543 + Lisp_Fwd_Int,504,18566 + Lisp_Fwd_Bool,505,18619 + Lisp_Fwd_Obj,506,18670 + Lisp_Fwd_Buffer_Obj,507,18729 + Lisp_Fwd_Kboard_Obj 508,18800 +typedef struct { EMACS_INT i; } Lisp_Object;567,21781 +#define LISP_INITIALLY(569,21827 +#undef CHECK_LISP_OBJECT_TYPE571,21858 +enum CHECK_LISP_OBJECT_TYPE 572,21888 +enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 572,21888 +typedef EMACS_INT Lisp_Object;577,22064 +#define LISP_INITIALLY(578,22095 +enum CHECK_LISP_OBJECT_TYPE 579,22125 +enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 579,22125 +#define LISP_INITIALLY_ZERO 582,22226 +INLINE bool BOOL_VECTOR_P 588,22350 +INLINE bool BUFFER_OBJFWDP 589,22391 +INLINE bool BUFFERP 590,22438 +INLINE bool CHAR_TABLE_P 591,22473 +INLINE Lisp_Object CHAR_TABLE_REF_ASCII 592,22513 +INLINE bool 593,22579 +INLINE bool 594,22614 +INLINE bool functionp 595,22650 +INLINE bool 596,22687 +INLINE bool 597,22725 +INLINE bool 598,22762 +INLINE bool 599,22797 +INLINE bool OVERLAYP 600,22831 +INLINE bool PROCESSP 601,22867 +INLINE bool PSEUDOVECTORP 602,22903 +INLINE bool SAVE_VALUEP 603,22949 +INLINE bool FINALIZERP 604,22988 +INLINE void set_sub_char_table_contents 605,23026 +INLINE bool STRINGP 607,23116 +INLINE bool SUB_CHAR_TABLE_P 608,23151 +INLINE bool SUBRP 609,23195 +INLINE bool 610,23228 +INLINE bool 611,23265 +INLINE bool WINDOWP 612,23306 +INLINE bool TERMINALP 613,23341 +INLINE struct Lisp_Save_Value *XSAVE_VALUE XSAVE_VALUE614,23378 +INLINE struct Lisp_Finalizer *XFINALIZER XFINALIZER615,23436 +INLINE struct Lisp_Symbol *(XSYMBOL)616,23492 +INLINE void 617,23544 +extern Lisp_Object char_table_ref 620,23616 +extern void char_table_set 621,23670 +extern _Noreturn Lisp_Object wrong_type_argument 624,23757 +extern _Noreturn void wrong_choice 625,23834 +extern bool might_dump;628,23925 +extern bool initialized;631,24061 +extern double extract_float 634,24117 +enum symbol_interned639,24199 + SYMBOL_UNINTERNED 641,24222 + SYMBOL_INTERNED 642,24247 + SYMBOL_INTERNED_IN_INITIAL_OBARRAY 643,24270 +enum symbol_redirect646,24315 + SYMBOL_PLAINVAL 648,24338 + SYMBOL_VARALIAS 649,24362 + SYMBOL_LOCALIZED 650,24386 + SYMBOL_FORWARDED 651,24410 +struct Lisp_Symbol654,24437 + ENUM_BF 663,24793 +#define EXFUN(707,26252 +#define DEFUN_ARGS_MANY 712,26446 +#define DEFUN_ARGS_UNEVALLED 713,26498 +#define DEFUN_ARGS_0 714,26541 +#define DEFUN_ARGS_1 715,26569 +#define DEFUN_ARGS_2 716,26604 +#define DEFUN_ARGS_3 717,26652 +#define DEFUN_ARGS_4 718,26713 +#define DEFUN_ARGS_5 719,26787 +#define DEFUN_ARGS_6 721,26880 +#define DEFUN_ARGS_7 723,26986 +#define DEFUN_ARGS_8 725,27105 +#define TAG_PTR(729,27296 +#define TAG_SYMOFFSET(734,27543 +#define XLI_BUILTIN_LISPSYM(741,27842 +#define DEFINE_LISP_SYMBOL(746,28101 +# define DEFINE_NON_NIL_Q_SYMBOL_MACROS 755,28572 +LISP_MACRO_DEFUN 762,28777 +# define ARRAY_MARK_FLAG 768,29024 +# define PSEUDOVECTOR_FLAG 774,29267 +enum pvec_type780,29568 + PVEC_NORMAL_VECTOR,782,29585 + PVEC_FREE,783,29607 + PVEC_PROCESS,784,29620 + PVEC_FRAME,785,29636 + PVEC_WINDOW,786,29650 + PVEC_BOOL_VECTOR,787,29665 + PVEC_BUFFER,788,29685 + PVEC_HASH_TABLE,789,29700 + PVEC_TERMINAL,790,29719 + PVEC_WINDOW_CONFIGURATION,791,29736 + PVEC_SUBR,792,29765 + PVEC_OTHER,793,29778 + PVEC_COMPILED,795,29856 + PVEC_CHAR_TABLE,796,29873 + PVEC_SUB_CHAR_TABLE,797,29892 + PVEC_FONT 798,29915 +enum More_Lisp_Bits801,29991 + PSEUDOVECTOR_SIZE_BITS 808,30382 + PSEUDOVECTOR_SIZE_MASK 809,30415 + PSEUDOVECTOR_REST_BITS 813,30625 + PSEUDOVECTOR_REST_MASK 814,30658 + PSEUDOVECTOR_AREA_BITS 818,30823 + PVEC_TYPE_MASK 819,30901 +# define VALMASK 829,31302 +DEFINE_GDB_SYMBOL_BEGIN VALMASK828,31257 +#define MOST_POSITIVE_FIXNUM 834,31532 +#define MOST_NEGATIVE_FIXNUM 835,31592 +XINT 874,32684 +XFASTINT 889,33035 +XSYMBOL 899,33263 +XTYPE 910,33481 +XUNTAG 918,33661 +LISP_MACRO_DEFUN 927,33857 +LISP_MACRO_DEFUN 940,34242 +#define FIXNUM_OVERFLOW_P(958,34855 +LISP_MACRO_DEFUN FIXNUM_OVERFLOW_P952,34632 +LISP_MACRO_DEFUN 970,35171 +XSTRING 980,35391 +#define SYMBOL_INDEX(988,35575 +XFLOAT 991,35636 +XPROCESS 1000,35778 +XWINDOW 1007,35895 +XTERMINAL 1014,36012 +XSUBR 1021,36134 +XBUFFER 1028,36245 +XCHAR_TABLE 1035,36369 +XSUB_CHAR_TABLE 1042,36506 +XBOOL_VECTOR 1049,36648 +make_lisp_ptr 1058,36827 +make_lisp_symbol 1066,37013 +builtin_lisp_symbol 1074,37197 +#define XSETINT(1079,37279 +#define XSETFASTINT(1080,37325 +#define XSETCONS(1081,37375 +#define XSETVECTOR(1082,37435 +#define XSETSTRING(1083,37503 +#define XSETSYMBOL(1084,37567 +#define XSETFLOAT(1085,37621 +#define XSETMISC(1086,37683 +#define XSETPVECTYPE(1090,37772 +#define XSETPVECTYPESIZE(1092,37888 +#define XSETPSEUDOVECTOR(1099,38185 +#define XSETTYPED_PSEUDOVECTOR(1105,38369 +#define XSETWINDOW_CONFIGURATION(1110,38579 +#define XSETPROCESS(1112,38675 +#define XSETWINDOW(1113,38741 +#define XSETTERMINAL(1114,38805 +#define XSETSUBR(1115,38873 +#define XSETCOMPILED(1116,38933 +#define XSETBUFFER(1117,39001 +#define XSETCHAR_TABLE(1118,39065 +#define XSETBOOL_VECTOR(1119,39137 +#define XSETSUB_CHAR_TABLE(1120,39211 +XINTPTR 1128,39581 +make_pointer_integer 1134,39661 +LISP_MACRO_DEFUN_VOID 1143,39826 +typedef struct interval *INTERVAL;INTERVAL1149,39987 +xcar_addr 1174,40760 +xcdr_addr 1179,40837 +LISP_MACRO_DEFUN 1185,40931 +XSETCDR 1198,41307 +CAR 1205,41457 +CDR 1212,41591 +CAR_SAFE 1221,41791 +CDR_SAFE 1226,41877 +STRING_MULTIBYTE 1243,42250 +#define STRING_BYTES_BOUND 1261,43057 +#define STRING_SET_UNIBYTE(1265,43201 +#define STRING_SET_MULTIBYTE(1275,43516 +SDATA 1286,43830 +SSDATA 1291,43908 +SREF 1297,44037 +SSET 1302,44128 +SCHARS 1307,44242 +extern ptrdiff_t string_bytes 1313,44337 +STRING_BYTES 1316,44415 +SBYTES 1326,44595 +STRING_SET_CHARS 1331,44681 +struct vectorlike_header1343,45232 +struct Lisp_Vector1369,46482 + ALIGNOF_STRUCT_LISP_VECTOR1378,46681 +struct Lisp_Bool_Vector1384,46864 +bool_vector_size 1399,47385 +bool_vector_data 1407,47523 +bool_vector_uchar_data 1413,47617 +bool_vector_words 1421,47803 +bool_vector_bytes 1428,47998 +bool_vector_bitref 1437,48238 +bool_vector_ref 1445,48478 +bool_vector_set 1453,48618 + header_size 1471,49047 + bool_header_size 1472,49106 + word_size 1473,49171 +AREF 1479,49284 +aref_addr 1485,49391 +ASIZE 1491,49501 +ASET 1497,49583 +gc_aset 1504,49742 +enum { NIL_IS_ZERO 1515,50269 +memclear 1520,50464 +#define VECSIZE(1531,50762 +#define PSEUDOVECSIZE(1538,51047 +#define UNSIGNED_CMP(1546,51480 +#define ASCII_CHAR_P(1552,51734 +enum CHARTAB_SIZE_BITS1565,52489 + CHARTAB_SIZE_BITS_0 1567,52516 + CHARTAB_SIZE_BITS_1 1568,52545 + CHARTAB_SIZE_BITS_2 1569,52574 + CHARTAB_SIZE_BITS_3 1570,52603 +extern const int chartab_size[chartab_size1573,52637 +struct Lisp_Char_Table1575,52672 +struct Lisp_Sub_Char_Table1606,53752 +CHAR_TABLE_REF_ASCII 1628,54566 +CHAR_TABLE_REF 1648,55113 +CHAR_TABLE_SET 1658,55402 +struct Lisp_Subr1670,55786 +enum char_table_specials1692,56798 + CHAR_TABLE_STANDARD_SLOTS 1697,56993 + SUB_CHAR_TABLE_OFFSET 1701,57214 +CHAR_TABLE_EXTRA_SLOTS 1707,57377 +verify 1714,57596 +LISP_MACRO_DEFUN 1723,57921 +SYMBOL_BLV 1732,58181 +SYMBOL_FWD 1738,58316 +LISP_MACRO_DEFUN_VOID 1744,58428 +SET_SYMBOL_BLV 1754,58691 +SET_SYMBOL_FWD 1760,58850 +SYMBOL_NAME 1767,59001 +SYMBOL_INTERNED_P 1775,59130 +SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P 1783,59299 +#define DEFSYM(1796,59809 +LISP_MACRO_DEFUN DEFSYM1792,59630 +struct hash_table_test1805,60062 +struct Lisp_Hash_Table1823,60555 +XHASH_TABLE 1880,62531 +#define XSET_HASH_TABLE(1885,62602 +HASH_TABLE_P 1889,62703 +HASH_KEY 1896,62860 +HASH_VALUE 1903,63040 +HASH_NEXT 1911,63254 +HASH_HASH 1918,63431 +HASH_INDEX 1926,63677 +HASH_TABLE_SIZE 1933,63826 +enum DEFAULT_HASH_SIZE 1940,63956 +enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE 1940,63956 +static double const DEFAULT_REHASH_THRESHOLD 1946,64176 +static double const DEFAULT_REHASH_SIZE 1950,64299 +sxhash_combine 1956,64465 +SXHASH_REDUCE 1964,64648 +struct Lisp_Misc_Any 1971,64806 + ENUM_BF 1973,64866 +struct Lisp_Marker1978,64980 + ENUM_BF 1980,65001 +struct Lisp_Overlay2021,66841 + ENUM_BF 2034,67349 + SAVE_UNUSED,2047,67644 + SAVE_INTEGER,2048,67661 + SAVE_FUNCPOINTER,2049,67679 + SAVE_POINTER,2050,67701 + SAVE_OBJECT2051,67719 +enum { SAVE_SLOT_BITS 2055,67804 +enum { SAVE_VALUE_SLOTS 2058,67901 +enum { SAVE_TYPE_BITS 2062,68009 +enum Lisp_Save_Type2064,68075 + SAVE_TYPE_INT_INT 2066,68099 + SAVE_TYPE_INT_INT_INT2067,68172 + SAVE_TYPE_OBJ_OBJ 2069,68262 + SAVE_TYPE_OBJ_OBJ_OBJ 2070,68333 + SAVE_TYPE_OBJ_OBJ_OBJ_OBJ2071,68414 + SAVE_TYPE_PTR_INT 2073,68509 + SAVE_TYPE_PTR_OBJ 2074,68582 + SAVE_TYPE_PTR_PTR 2075,68654 + SAVE_TYPE_FUNCPTR_PTR_OBJ2076,68727 + SAVE_TYPE_MEMORY 2080,68885 +typedef void (*voidfuncptr)voidfuncptr2108,69839 +struct Lisp_Save_Value2110,69876 + ENUM_BF 2112,69903 +save_type 2134,70755 +XSAVE_POINTER 2143,70985 +set_save_pointer 2149,71147 +XSAVE_FUNCPOINTER 2155,71329 +XSAVE_INTEGER 2164,71549 +set_save_integer 2170,71711 +XSAVE_OBJECT 2179,71932 +struct Lisp_Finalizer2186,72109 +struct Lisp_Free2201,72584 + ENUM_BF 2203,72605 +union Lisp_Misc2212,72885 +XMISC 2223,73184 +XMISCANY 2229,73273 +XMISCTYPE 2236,73382 +XMARKER 2242,73470 +XOVERLAY 2249,73585 +XSAVE_VALUE 2256,73706 +XFINALIZER 2263,73835 +struct Lisp_Intfwd2274,74120 +struct Lisp_Boolfwd2284,74414 +struct Lisp_Objfwd2294,74705 +struct Lisp_Buffer_Objfwd2302,74937 +struct Lisp_Buffer_Local_Value2334,76473 +struct Lisp_Kboard_Objfwd2362,77732 +union Lisp_Fwd2368,77841 +XFWDTYPE 2378,78087 +XBUFFER_OBJFWD 2384,78183 +struct Lisp_Float2391,78319 +XFLOAT_DATA 2401,78437 + IEEE_FLOATING_POINT2415,78946 +#define _UCHAR_T2423,79269 +typedef unsigned char UCHAR;2424,79286 +enum Lisp_Compiled2429,79369 + COMPILED_ARGLIST 2431,79392 + COMPILED_BYTECODE 2432,79418 + COMPILED_CONSTANTS 2433,79445 + COMPILED_STACK_DEPTH 2434,79473 + COMPILED_DOC_STRING 2435,79503 + COMPILED_INTERACTIVE 2436,79532 +enum char_bits2443,79834 + CHAR_ALT 2445,79853 + CHAR_SUPER 2446,79879 + CHAR_HYPER 2447,79907 + CHAR_SHIFT 2448,79935 + CHAR_CTL 2449,79963 + CHAR_META 2450,79989 + CHAR_MODIFIER_MASK 2452,80017 + CHARACTERBITS 2457,80212 +LISP_MACRO_DEFUN 2462,80270 +NATNUMP 2470,80412 +RANGED_INTEGERP 2476,80493 +#define TYPE_RANGED_INTEGERP(2481,80615 +LISP_MACRO_DEFUN 2486,80800 +VECTORP 2500,81273 +OVERLAYP 2505,81376 +SAVE_VALUEP 2510,81475 +FINALIZERP 2516,81581 +AUTOLOADP 2522,81685 +BUFFER_OBJFWDP 2528,81776 +PSEUDOVECTOR_TYPEP 2534,81874 +PSEUDOVECTORP 2542,82127 +WINDOW_CONFIGURATIONP 2558,82479 +PROCESSP 2564,82589 +WINDOWP 2570,82673 +TERMINALP 2576,82755 +SUBRP 2582,82841 +COMPILEDP 2588,82919 +BUFFERP 2594,83005 +CHAR_TABLE_P 2600,83087 +SUB_CHAR_TABLE_P 2606,83178 +BOOL_VECTOR_P 2612,83277 +FRAMEP 2618,83370 +IMAGEP 2625,83487 +ARRAYP 2632,83592 +CHECK_LIST 2638,83711 +LISP_MACRO_DEFUN_VOID 2643,83792 +CHECK_STRING_CAR 2653,84089 +CHECK_CONS 2658,84193 +CHECK_VECTOR 2663,84273 +CHECK_BOOL_VECTOR 2668,84359 +CHECK_VECTOR_OR_STRING 2674,84536 +CHECK_ARRAY 2683,84710 +CHECK_BUFFER 2688,84818 +CHECK_WINDOW 2693,84904 +CHECK_PROCESS 2699,85010 +CHECK_NATNUM 2705,85106 +#define CHECK_RANGED_INTEGER(2710,85183 +#define CHECK_TYPE_RANGED_INTEGER(2721,85566 +#define CHECK_NUMBER_COERCE_MARKER(2729,85836 +XFLOATINT 2738,86089 +CHECK_NUMBER_OR_FLOAT 2744,86160 +#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(2749,86259 +CHECK_NUMBER_CAR 2760,86669 +CHECK_NUMBER_CDR 2768,86791 +#define DEFUN(2803,88386 +#define DEFUN(2812,88854 +FUNCTIONP 2822,89209 +extern void defsubr 2829,89361 +enum maxargs2831,89404 + MANY 2833,89421 + UNEVALLED 2834,89436 +#define CALLMANY(2838,89539 +#define CALLN(2844,89892 +extern void defvar_lisp 2846,89962 +extern void defvar_lisp_nopro 2847,90039 +extern void defvar_bool 2848,90122 +extern void defvar_int 2849,90193 +extern void defvar_kboard 2850,90267 +#define DEFVAR_LISP(2869,91097 +#define DEFVAR_LISP_NOPRO(2874,91269 +#define DEFVAR_BOOL(2879,91451 +#define DEFVAR_INT(2884,91624 +#define DEFVAR_BUFFER_DEFAULTS(2890,91795 +#define DEFVAR_KBOARD(2896,91999 +typedef jmp_buf sys_jmp_buf;2906,92323 +# define sys_setjmp(2907,92352 +# define sys_longjmp(2908,92387 +typedef sigjmp_buf sys_jmp_buf;2910,92459 +# define sys_setjmp(2911,92491 +# define sys_longjmp(2912,92531 +typedef jmp_buf sys_jmp_buf;2916,92690 +# define sys_setjmp(2917,92719 +# define sys_longjmp(2918,92753 +enum specbind_tag 2943,93805 + SPECPDL_UNWIND,2944,93825 + SPECPDL_UNWIND_PTR,2945,93894 + SPECPDL_UNWIND_INT,2946,93945 + SPECPDL_UNWIND_VOID,2947,93993 + SPECPDL_BACKTRACE,2948,94047 + SPECPDL_LET,2949,94105 + SPECPDL_LET_LOCAL,2951,94235 + SPECPDL_LET_DEFAULT 2952,94292 +union specbinding2955,94364 + ENUM_BF 2957,94386 + ENUM_BF 2959,94443 + ENUM_BF 2964,94573 + ENUM_BF 2969,94696 + ENUM_BF 2974,94814 + ENUM_BF 2978,94919 + ENUM_BF 2983,95094 +enum handlertype 3021,96410 +enum handlertype { CATCHER,3021,96410 +enum handlertype { CATCHER, CONDITION_CASE 3021,96410 +struct handler3023,96457 +#define PUSH_HANDLER(3053,97446 +extern Lisp_Object memory_signal_data;3075,98152 +extern char *stack_bottom;stack_bottom3079,98285 +extern void process_pending_signals 3097,99102 +extern bool volatile pending_signals;3098,99146 +extern void process_quit_flag 3100,99185 +#define QUIT 3101,99223 +#define QUITP 3112,99473 +extern Lisp_Object Vascii_downcase_table;3114,99534 +extern Lisp_Object Vascii_canon_table;3115,99576 +extern struct gcpro *gcprolist;gcprolist3130,100283 +struct gcpro3132,100316 +#define GC_USE_GCPROS_AS_BEFORE 3171,101297 +#define GC_MAKE_GCPROS_NOOPS 3172,101332 +#define GC_MARK_STACK_CHECK_GCPROS 3173,101364 +#define GC_USE_GCPROS_CHECK_ZOMBIES 3174,101401 +#define GC_MARK_STACK 3177,101462 +#define BYTE_MARK_STACK 3181,101562 +#define GCPRO1(3190,101833 +#define GCPRO2(3191,101873 +#define GCPRO3(3192,101939 +#define GCPRO4(3194,102034 +#define GCPRO5(3196,102154 +#define GCPRO6(3198,102299 +#define GCPRO7(3201,102474 +#define UNGCPRO 3202,102553 +#define GCPRO1(3208,102653 +#define GCPRO2(3212,102775 +#define GCPRO3(3217,102967 +#define GCPRO4(3223,103229 +#define GCPRO5(3230,103560 +#define GCPRO6(3238,103961 +#define GCPRO7(3247,104431 +#define UNGCPRO 3257,104971 +extern int gcpro_level;3261,105040 +#define GCPRO1(3263,105065 +#define GCPRO2(3269,105299 +#define GCPRO3(3278,105717 +#define GCPRO4(3289,106274 +#define GCPRO5(3302,106972 +#define GCPRO6(3317,107812 +#define GCPRO7(3334,108793 +#define UNGCPRO 3353,109916 +#define RETURN_UNGCPRO(3363,110183 +void staticpro 3375,110456 +vcopy 3384,110657 +set_hash_key_slot 3393,110932 +set_hash_value_slot 3399,111071 +set_symbol_function 3408,111306 +set_symbol_plist 3414,111421 +set_symbol_next 3420,111524 +blv_found 3428,111697 +set_overlay_plist 3437,111880 +string_intervals 3445,112031 +set_string_intervals 3453,112153 +set_char_table_defalt 3462,112355 +set_char_table_purpose 3467,112467 +set_char_table_extras 3475,112636 +set_char_table_contents 3482,112845 +set_sub_char_table_contents 3489,113040 +extern Lisp_Object indirect_function 3495,113199 +extern Lisp_Object find_symbol_value 3496,113251 +enum Arith_Comparison 3497,113303 + ARITH_EQUAL,3498,113327 + ARITH_NOTEQUAL,3499,113342 + ARITH_LESS,3500,113360 + ARITH_GRTR,3501,113374 + ARITH_LESS_OR_EQUAL,3502,113388 + ARITH_GRTR_OR_EQUAL3503,113411 +extern Lisp_Object arithcompare 3505,113436 +#define INTEGER_TO_CONS(3511,113762 +#define CONS_TO_INTEGER(3529,114625 +extern intmax_t cons_to_signed 3533,114840 +extern uintmax_t cons_to_unsigned 3534,114906 +extern struct Lisp_Symbol *indirect_variable indirect_variable3536,114967 +extern _Noreturn void args_out_of_range 3537,115036 +extern _Noreturn void args_out_of_range_3 3538,115104 +extern Lisp_Object do_symval_forwarding 3540,115195 +extern void set_internal 3541,115255 +extern void syms_of_data 3542,115327 +extern void swap_in_global_binding 3543,115360 +extern void syms_of_cmds 3546,115444 +extern void keys_of_cmds 3547,115477 +extern Lisp_Object detect_coding_system 3550,115539 +extern void init_coding 3552,115692 +extern void init_coding_once 3553,115724 +extern void syms_of_coding 3554,115761 +extern ptrdiff_t chars_in_text 3557,115828 +extern ptrdiff_t multibyte_chars_in_text 3558,115895 +extern void syms_of_character 3559,115972 +extern void init_charset 3562,116040 +extern void init_charset_once 3563,116073 +extern void syms_of_charset 3564,116111 +extern void init_syntax_once 3569,116231 +extern void syms_of_syntax 3570,116268 +enum { NEXT_ALMOST_PRIME_LIMIT 3573,116329 +extern EMACS_INT next_almost_prime 3574,116368 +enum constype 3739,123820 +enum constype {CONSTYPE_HEAP,CONSTYPE_HEAP3739,123820 +enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}CONSTYPE_PURE3739,123820 +extern Lisp_Object listn 3740,123866 +list2i 3745,124010 +list3i 3751,124119 +list4i 3757,124258 +extern Lisp_Object make_uninit_bool_vector 3763,124410 +extern Lisp_Object bool_vector_fill 3764,124466 +extern _Noreturn void string_overflow 3765,124530 +extern Lisp_Object make_string 3766,124576 +extern Lisp_Object make_formatted_string 3767,124634 +extern Lisp_Object make_multibyte_string 3779,124988 +extern Lisp_Object make_event_array 3780,125067 +extern Lisp_Object make_uninit_string 3781,125131 +extern Lisp_Object make_uninit_multibyte_string 3782,125182 +extern Lisp_Object make_string_from_bytes 3783,125254 +extern Lisp_Object make_specified_string 3784,125334 +extern Lisp_Object make_pure_string 3786,125426 +extern Lisp_Object make_pure_c_string 3787,125506 +build_pure_c_string 3792,125662 +build_string 3801,125867 +extern Lisp_Object pure_cons 3806,125945 +extern void make_byte_code 3807,126002 +extern struct Lisp_Vector *allocate_vector allocate_vector3808,126053 +make_uninit_vector 3820,126438 +make_uninit_sub_char_table 3833,126657 +extern struct Lisp_Vector *allocate_pseudovector allocate_pseudovector3844,126966 +#define ALLOCATE_PSEUDOVECTOR(3850,127201 +#define ALLOCATE_ZEROED_PSEUDOVECTOR(3858,127537 +extern bool gc_in_progress;3863,127738 +extern bool abort_on_gc;3864,127766 +extern Lisp_Object make_float 3865,127791 +extern void display_malloc_warning 3866,127831 +extern ptrdiff_t inhibit_garbage_collection 3867,127874 +extern Lisp_Object make_save_int_int_int 3868,127926 +extern Lisp_Object make_save_obj_obj_obj_obj 3869,128002 +extern Lisp_Object make_save_ptr 3871,128112 +extern Lisp_Object make_save_ptr_int 3872,128155 +extern Lisp_Object make_save_ptr_ptr 3873,128213 +extern Lisp_Object make_save_funcptr_ptr_obj 3874,128268 +extern Lisp_Object make_save_memory 3876,128364 +extern void free_save_value 3877,128428 +extern Lisp_Object build_overlay 3878,128471 +extern void free_marker 3879,128545 +extern void free_cons 3880,128584 +extern void init_alloc_once 3881,128628 +extern void init_alloc 3882,128664 +extern void syms_of_alloc 3883,128695 +extern struct buffer * allocate_buffer 3884,128729 +extern int valid_lisp_object_p 3885,128776 +extern int relocatable_string_data_p 3886,128822 +extern void check_cons_list 3888,128901 +INLINE void 3890,128943 +extern void *r_alloc r_alloc3895,129064 +#define FLOAT_TO_STRING_BUFSIZE 3927,130527 +extern int openp 3957,131676 +extern Lisp_Object string_to_number 3959,131786 +extern void map_obarray 3960,131849 +extern void dir_warning 3962,131963 +extern void init_obarray 3963,132016 +extern void init_lread 3964,132049 +extern void syms_of_lread 3965,132080 +intern 3968,132134 +intern_c_string 3974,132222 +extern EMACS_INT lisp_eval_depth;3980,132335 +extern Lisp_Object Vautoload_queue;3981,132369 +extern Lisp_Object Vrun_hooks;3982,132405 +extern Lisp_Object Vsignaling_function;3983,132436 +extern Lisp_Object inhibit_lisp_code;3984,132476 +extern struct handler *handlerlist;handlerlist3985,132514 +extern void run_hook 3994,132756 +extern void run_hook_with_args_2 3995,132792 +extern Lisp_Object run_hook_with_args 3996,132866 +extern _Noreturn void xsignal 3999,133025 +extern _Noreturn void xsignal0 4000,133083 +extern _Noreturn void xsignal1 4001,133129 +extern _Noreturn void xsignal2 4002,133188 +extern _Noreturn void xsignal3 4003,133260 +extern _Noreturn void signal_error 4005,133349 +extern Lisp_Object eval_sub 4006,133413 +extern Lisp_Object apply1 4007,133461 +extern Lisp_Object call0 4008,133515 +extern Lisp_Object call1 4009,133555 +extern Lisp_Object call2 4010,133608 +extern Lisp_Object call3 4011,133674 +extern Lisp_Object call4 4012,133753 +extern Lisp_Object call5 4013,133845 +extern Lisp_Object call6 4014,133950 +extern Lisp_Object call7 4015,134068 +extern Lisp_Object internal_catch 4016,134199 +extern Lisp_Object internal_lisp_condition_case 4017,134292 +extern Lisp_Object internal_condition_case 4018,134381 +extern Lisp_Object internal_condition_case_1 4019,134494 +extern Lisp_Object internal_condition_case_2 4020,134629 +extern Lisp_Object internal_condition_case_n4021,134790 +extern void specbind 4024,134986 +extern void record_unwind_protect 4025,135035 +extern void record_unwind_protect_ptr 4026,135108 +extern void record_unwind_protect_int 4027,135175 +extern void record_unwind_protect_void 4028,135236 +extern void record_unwind_protect_nothing 4029,135294 +extern void clear_unwind_protect 4030,135344 +extern void set_unwind_protect 4031,135390 +extern void set_unwind_protect_ptr 4032,135471 +extern Lisp_Object unbind_to 4033,135546 +extern _Noreturn void error 4034,135601 +fast_string_match_ignore_case 4136,140089 +extern ptrdiff_t fast_c_string_match_ignore_case 4141,140239 +extern ptrdiff_t fast_looking_at 4143,140336 +extern ptrdiff_t find_newline 4145,140475 +extern ptrdiff_t scan_newline 4147,140604 +extern ptrdiff_t scan_newline_from_point 4149,140707 +extern ptrdiff_t find_newline_no_quit 4150,140787 +extern ptrdiff_t find_before_next_newline 4152,140884 +extern void syms_of_search 4154,140982 +extern void clear_regexp_cache 4155,141017 +extern Lisp_Object Vminibuffer_list;4159,141087 +extern Lisp_Object last_minibuf_string;4160,141124 +extern Lisp_Object get_minibuffer 4161,141164 +extern void init_minibuf_once 4162,141211 +extern void syms_of_minibuf 4163,141249 +extern void syms_of_callint 4167,141316 +extern void syms_of_casefiddle 4171,141386 +extern void keys_of_casefiddle 4172,141425 +extern void init_casetab_once 4176,141495 +extern void syms_of_casetab 4177,141533 +extern Lisp_Object echo_message_buffer;4181,141601 +extern struct kboard *echo_kboard;echo_kboard4182,141641 +extern void cancel_echoing 4183,141676 +extern Lisp_Object last_undo_boundary;4184,141711 +extern bool input_pending;4185,141750 +extern sigjmp_buf return_to_command_loop;4187,141813 +extern Lisp_Object menu_bar_items 4189,141862 +extern Lisp_Object tool_bar_items 4190,141911 +extern void discard_mouse_events 4191,141967 +void handle_input_available_signal 4193,142028 +extern Lisp_Object pending_funcalls;4195,142077 +extern bool detect_input_pending 4196,142114 +extern bool detect_input_pending_ignore_squeezables 4197,142155 +extern bool detect_input_pending_run_timers 4198,142215 +extern void safe_run_hooks 4199,142267 +extern void cmd_error_internal 4200,142309 +extern Lisp_Object command_loop_1 4201,142369 +extern Lisp_Object read_menu_command 4202,142411 +extern Lisp_Object recursive_edit_1 4203,142456 +extern void record_auto_save 4204,142500 +extern void force_auto_save_soon 4205,142537 +extern void init_keyboard 4206,142578 +extern void syms_of_keyboard 4207,142612 +extern void keys_of_keyboard 4208,142649 +extern ptrdiff_t current_column 4211,142715 +extern void invalidate_current_column 4212,142755 +extern bool indented_beyond_p 4213,142801 +extern void syms_of_indent 4214,142866 +extern void store_frame_param 4217,142929 +extern void store_in_alist 4218,143003 +extern Lisp_Object do_switch_frame 4219,143073 +extern Lisp_Object get_frame_param 4220,143146 +extern void frames_discard_buffer 4221,143212 +extern void syms_of_frame 4222,143261 +extern char **initial_argv;initial_argv4225,143323 +extern int initial_argc;4226,143351 +extern bool display_arg;4228,143426 +extern Lisp_Object decode_env_path 4230,143458 +extern Lisp_Object empty_unibyte_string,4231,143529 +extern Lisp_Object empty_unibyte_string, empty_multibyte_string;4231,143529 +extern _Noreturn void terminate_due_to_signal 4232,143594 +extern Lisp_Object Vlibrary_cache;4234,143669 +void fixup_locale 4237,143730 +void synchronize_system_messages_locale 4238,143756 +void synchronize_system_time_locale 4239,143804 +INLINE void fixup_locale 4241,143854 +INLINE void synchronize_system_messages_locale 4242,143889 +INLINE void synchronize_system_time_locale 4243,143946 +extern void shut_down_emacs 4245,144006 +extern bool noninteractive;4248,144132 +extern bool no_site_lisp;4251,144224 +extern int daemon_pipe[daemon_pipe4256,144392 +#define IS_DAEMON 4257,144419 +#define DAEMON_RUNNING 4258,144459 +extern void *w32_daemon_event;w32_daemon_event4260,144527 +#define IS_DAEMON 4261,144558 +#define DAEMON_RUNNING 4262,144603 +extern bool fatal_error_in_progress;4266,144724 +extern bool inhibit_window_system;4269,144830 +extern bool running_asynch_code;4271,144923 +extern void kill_buffer_processes 4274,144986 +extern int wait_reading_process_output 4275,145035 +# define WAIT_READING_MAX 4281,145422 +# define WAIT_READING_MAX 4283,145494 +extern void add_timer_wait_descriptor 4286,145558 +extern void add_keyboard_wait_descriptor 4288,145610 +extern void delete_keyboard_wait_descriptor 4289,145658 +extern void add_gpm_wait_descriptor 4291,145725 +extern void delete_gpm_wait_descriptor 4292,145768 +extern void init_process_emacs 4294,145821 +extern void syms_of_process 4295,145860 +extern void setup_process_coding_systems 4296,145896 +extern int child_setup 4302,146016 +extern void init_callproc_1 4303,146084 +extern void init_callproc 4304,146120 +extern void set_initial_environment 4305,146154 +extern void syms_of_callproc 4306,146198 +extern Lisp_Object read_doc_string 4309,146261 +extern Lisp_Object get_doc_string 4310,146311 +extern void syms_of_doc 4311,146372 +extern int read_bytecode_char 4312,146404 +extern void syms_of_bytecode 4315,146473 +extern struct byte_stack *byte_stack_list;byte_stack_list4316,146510 +extern void mark_byte_stack 4318,146573 +extern void unmark_byte_stack 4320,146616 +extern Lisp_Object exec_byte_code 4321,146654 +extern void init_macros 4325,146804 +extern void syms_of_macros 4326,146836 +extern void truncate_undo_list 4329,146898 +extern void record_insert 4330,146948 +extern void record_delete 4331,146998 +extern void record_first_change 4332,147056 +extern void record_change 4333,147096 +extern void record_property_change 4334,147146 +extern void syms_of_undo 4337,147288 +extern void report_interval_modification 4340,147352 +extern void syms_of_menu 4343,147448 +extern void syms_of_xmenu 4346,147509 +extern char *get_current_dir_name get_current_dir_name4356,147711 +extern void stuff_char 4358,147760 +extern void init_foreground_group 4359,147793 +extern void sys_subshell 4360,147835 +extern void sys_suspend 4361,147868 +extern void discard_tty_input 4362,147900 +extern void init_sys_modes 4363,147938 +extern void reset_sys_modes 4364,147994 +extern void init_all_sys_modes 4365,148051 +extern void reset_all_sys_modes 4366,148090 +extern void child_setup_tty 4367,148130 +extern void setup_pty 4368,148165 +extern int set_window_size 4369,148194 +extern EMACS_INT get_random 4370,148238 +extern void seed_random 4371,148274 +extern void init_random 4372,148319 +extern void emacs_backtrace 4373,148351 +extern _Noreturn void emacs_abort 4374,148386 +extern void xputenv 4527,152700 +extern char *egetenv_internal egetenv_internal4529,152737 +egetenv 4532,152809 +extern void init_system_name 4539,153012 +#define eabs(4545,153305 +#define make_fixnum_or_float(4550,153438 +enum MAX_ALLOCA 4556,153689 +enum MAX_ALLOCA { MAX_ALLOCA 4556,153689 +extern void *record_xmalloc record_xmalloc4558,153734 +#define USE_SAFE_ALLOCA 4560,153800 +#define AVAIL_ALLOCA(4564,153933 +#define SAFE_ALLOCA(4568,154044 +#define SAFE_NALLOCA(4576,154385 +#define SAFE_ALLOCA_STRING(4590,154861 +#define SAFE_FREE(4598,155113 +#define SAFE_ALLOCA_LISP(4625,155691 +# define USE_STACK_LISP_OBJECTS 4652,156813 +# undef USE_STACK_LISP_OBJECTS4658,156979 +# define USE_STACK_LISP_OBJECTS 4659,157010 +enum { defined_GC_CHECK_STRING_BYTES 4663,157085 +enum { defined_GC_CHECK_STRING_BYTES 4665,157138 +union Aligned_Cons4670,157272 +union Aligned_String4676,157352 + USE_STACK_CONS 4689,157707 + USE_STACK_STRING 4691,157813 +#define STACK_CONS(4699,158150 +#define AUTO_CONS_EXPR(4701,158247 +#define AUTO_CONS(4709,158610 +#define AUTO_LIST1(4710,158681 +#define AUTO_LIST2(4712,158789 +#define AUTO_LIST3(4716,158944 +#define AUTO_LIST4(4720,159119 +extern const char *verify_ascii verify_ascii4730,159456 +# define verify_ascii(4732,159510 +#define AUTO_STRING(4740,159818 +#define FOR_EACH_TAIL(4752,160282 +#define FOR_EACH_ALIST_VALUE(4766,160773 +maybe_gc 4774,161060 +functionp 4784,161299 + +c-src/machsyscalls.c,23 +#define SYSCALL(6,113 + +c-src/machsyscalls.h,159 +SYSCALL (mach_msg_trap,1,0 +SYSCALL (mach_reply_port,13,314 +SYSCALL (mach_thread_self,18,377 +SYSCALL (mach_task_self,23,441 +SYSCALL (mach_host_self,28,503 + +c-src/fail.c,30 +void (*prt_call(prt_call1,0 + +c-src/h.h,1962 + ELEM_I/ELEM_I3,15 +} Fails_t;5,85 +typedef void Lang_function 6,96 +void Asm_labels 7,127 +typedef struct tpcmd8,147 +#define ggg 10,170 +tpcmd;15,209 +typedef struct foobar2_ 16,216 +} foobar2;20,307 + DEVICE_SWP,23,333 + DEVICE_LAST24,349 +} bsp_DevId;25,365 + struct constant_args 27,394 +} args;30,457 +typedef int *regset;regset31,465 +typedef int INT;32,486 +typedef union abc33,503 +} ghi1;36,534 +typedef union abc 37,542 +} ghi2;39,573 +typedef struct a 40,581 +} b;41,600 +#define c(42,605 +typedef struct an_extern_linkage *an_extern_linkage_ptr;an_extern_linkage_ptr43,619 +typedef struct an_extern_linkage 44,676 +} an_extern_linkage;56,1054 +typedef struct pollfd pfdset[pfdset57,1075 +typedef union rtunion_def58,1119 + } womboid 63,1206 +typedef union rtunion_def64,1220 +womboid75,1330 +enum {dog,dog81,1416 +enum {dog, cat}cat81,1416 +enum {dog, cat} animals;81,1416 +typedef void (_CALLBACK_ *signal_handler)signal_handler82,1441 +typedef void (_CALLBACK_ *signal_handler1)signal_handler183,1489 +/* comment */ #define ANSIC84,1538 + #define ANSIC85,1566 +typedef void (proc)87,1588 +typedef void OperatorFun(88,1612 +typedef int f(89,1648 +struct my_struct 91,1691 +typedef struct my_struct my_typedef;93,1713 +typedef RETSIGTYPE (*signal_handler_t)signal_handler_t94,1750 + Date 04 May 87 235311 PDT 96,1802 +typedef unsigned char unchar;99,1880 +typedef int X,100,1910 +typedef int X, Y,100,1910 +typedef int X, Y, Z;100,1910 +typedef mio mao;101,1931 +extern void ab(102,1948 +typedef struct a 103,1966 +typedef struct a { } b;103,1966 +typedef struct b104,1990 +} c;106,2009 +int (*oldhup)oldhup107,2014 +request (*oldhup)oldhup108,2031 +int extvar;109,2053 +#define tag1110,2065 +#define aaaaaa 111,2078 +#define bbbbbb\bbbbbb113,2102 +#define cccccccccc115,2125 +#define enter_critical_section 116,2144 +#define exit_critical_to_previous 117,2199 +#define UNDEFINED118,2259 +struct re_pattern_buffer 119,2277 + +cp-src/c.C,2378 +template * f(48,1556 +int f(49,1571 +int A::f(f50,1590 +A > A,int>::f(f51,1618 +template class AT 52,1668 +class AU 53,1716 +class B<B54,1735 +class B { void f(54,1735 +const A::B::T& abt 55,1766 +class A 56,1792 +class A { class B 56,1792 +class A { class B { int f(56,1792 +class A 57,1827 + int get_data(58,1837 + A operator+(59,1861 +is_muldiv_operation(61,1888 +domain foo 68,1956 + void f(69,1969 +void A::A(A72,1990 +struct A 73,2005 +struct A { A(73,2005 +struct B 74,2023 +struct B { B(74,2023 +void B::B(B75,2042 +void BE_Node::BE_Node(BE_Node76,2057 +class BE_Node 77,2084 +struct foo 79,2103 +class test 86,2157 + int f(87,2170 + int ff(89,2232 + int g(90,2255 +class AST_Root 92,2279 +class AST_Root;96,2328 +AST_ConcreteType::AST_ConcreteType(99,2394 +AST_Array::AST_Array(107,2533 + void f(115,2734 +struct A 117,2754 + ~A(118,2765 +A::~A(~A120,2778 +struct B 122,2790 + ~B(123,2801 +enum {dog,dog126,2818 +enum {dog, cat}cat126,2818 +enum {dog, cat} animals;126,2818 +struct {int teats;} cow;127,2843 +class Boo 129,2869 + enum {dog,dog130,2881 + enum {dog, cat}cat130,2881 + foo(133,2955 + Boo(137,2996 + Boo(138,3053 +Boo::Boo(141,3071 +typedef int should_see_this_one_enclosed_in_extern_C;149,3156 +typedef int (*should_see_this_function_pointer)should_see_this_function_pointer153,3229 +typedef int should_see_this_array_type[should_see_this_array_type156,3311 + +cp-src/x.cc,102 +class XX1,0 + int foo(4,19 + void bar(5,35 +XX::foo(foo9,60 +XX::bar(bar15,95 +main(21,126 + +cp-src/burton.cpp,124 +::dummy::dummy test::dummy1(dummy11,0 +::dummy::dummy test::dummy2(dummy26,64 +::dummy::dummy test::dummy3(dummy311,143 + +cp-src/functions.cpp,778 +void Date::setDate setDate5,148 +void Date::plus plus32,939 +void Date::minus minus42,1229 +void Date::shift shift52,1407 +Date & Date::operator = operator =62,1628 +Date & Date::operator += operator +=69,1789 +Date & Date::operator -= operator -=78,1939 +Date & Date::operator ++ operator ++87,2080 +Date & Date::operator -- operator --96,2216 +int Date::operator - operator -104,2331 +int Date::operator < operator <112,2483 +int Date::operator > operator >116,2557 +int Date::operator == operator ==120,2631 +ostream& operator << operator <<124,2707 +istream& operator >> operator >>133,2943 +bool isLeap 159,3543 +bool isHoliday 163,3629 +void asort(173,3865 +void ReadVacation 186,4064 +void Debug 201,4523 +int WorkingDays(211,4867 +Date StartDay(226,5129 + +cp-src/MDiagArray2.h,1194 +#define octave_MDiagArray2_h 29,870 +#undef LTGT35,967 +#define LTGT39,1031 +#define LTGT 42,1051 +class MDiagArray2;45,1087 +operator += operator +=48,1145 +operator -= operator -=51,1242 +operator * operator *54,1339 +operator / operator /57,1428 +operator * operator *60,1517 +operator + operator +63,1605 +operator - operator -66,1707 +product 69,1808 +operator - operator -72,1907 +class MDiagArray2 78,2022 + MDiagArray2 82,2077 + MDiagArray2 86,2154 + MDiagArray2 87,2198 + MDiagArray2 88,2254 + MDiagArray2 89,2329 + MDiagArray2 90,2387 + MDiagArray2 91,2450 + ~MDiagArray2 93,2515 + MDiagArray2& operator = operator =95,2542 + DiagArray2::operator = operator =97,2603 + operator MArray2 operator MArray2101,2667 + operator += operator +=116,2966 + operator -= operator -=119,3057 + friend MDiagArray2 operator * operator *123,3174 + friend MDiagArray2 operator / operator /124,3253 + friend MDiagArray2 operator * operator *128,3384 + operator + operator +133,3544 + operator - operator -136,3640 + friend MDiagArray2 operator - operator -141,3803 +#undef LTGT144,3874 +#define INSTANTIATE_MDIAGARRAY_FRIENDS(146,3887 + +cp-src/Range.h,678 +#define octave_Range_h 24,765 +class istream;30,840 +class ostream;31,855 +class Matrix;32,870 +Range35,891 + Range 39,909 + Range 42,995 + Range 46,1130 + Range 50,1248 + double base 54,1376 + double limit 55,1425 + double inc 56,1475 + int nelem 57,1523 + bool all_elements_are_ints 59,1571 + Matrix matrix_value 61,1615 + double min 63,1652 + double max 64,1679 + void sort 66,1707 + void set_base 68,1728 + void set_limit 69,1774 + void set_inc 70,1821 + friend ostream& operator << operator <<72,1867 + friend istream& operator >> operator >>73,1928 + void print_range 75,1984 + int nelem_internal 85,2099 +extern Range operator - operator -88,2138 + +cp-src/screen.cpp,228 +unsigned char cursor_x,15,548 +unsigned char cursor_x, cursor_y;15,548 +static union REGS regs;16,582 +void goto_xy(18,607 +void hide_cursor(27,774 +void cursor_position(32,836 +void clear_screen(41,997 +void write_xyc(55,1247 + +cp-src/screen.hpp,538 +#define __COLORS9,401 +enum COLORS 11,419 + BLACK,12,433 + BLUE,13,471 + GREEN,14,481 + CYAN,15,492 + RED,16,502 + MAGENTA,17,511 + BROWN,18,524 + LIGHTGRAY,19,535 + DARKGRAY,20,550 + LIGHTBLUE,21,589 + LIGHTGREEN,22,604 + LIGHTCYAN,23,620 + LIGHTRED,24,635 + LIGHTMAGENTA,25,649 + YELLOW,26,667 + WHITE27,679 +#define SCREEN_FP(31,700 +#define SCREEN_START 33,795 +void goto_xy(35,835 +void hide_cursor(36,883 +void cursor_position(37,907 +void clear_screen(38,935 +void write_xyc(39,960 + +cp-src/conway.cpp,288 +#define max(12,357 +#define min(13,393 +const int num_rows 15,430 +const int num_columns 16,470 +class site *field_of_play[field_of_play18,499 +int site::total_surrounding(total_surrounding20,550 +void display(37,958 +void glider(50,1239 +void traffic_light(59,1478 +void main(67,1633 + +cp-src/conway.hpp,215 +class site:site5,235 + int total_surrounding(8,303 + site(10,344 + ~site(11,397 + char read(12,410 + void set(13,444 + void clear(14,478 + void compute_next_state(15,514 + void step(22,717 + +cp-src/clheir.cpp,359 +const int max_num_generic_objects 9,298 +generic_object * object_registry[object_registry10,340 +void init_registry(12,400 +void step_everybody(19,527 +void discrete_location::clear_neighbors(clear_neighbors31,852 +generic_object::generic_object(generic_object36,981 +generic_object::~generic_object(~generic_object48,1255 +void agent::move(move53,1353 + +cp-src/clheir.hpp,731 +extern void init_registry(10,452 +extern void step_everybody(11,485 +class generic_object13,520 + generic_object(17,582 + ~generic_object(19,724 + virtual void compute_next_state(21,843 + virtual void step(22,889 +const int max_num_directions 31,1220 +class location:location33,1290 + location(43,1643 + ~location(44,1662 +class irregular_location:irregular_location47,1687 + irregular_location(51,1763 + ~irregular_location(53,1855 +class discrete_location:discrete_location56,1890 + void clear_neighbors(60,2005 + discrete_location(62,2045 + ~discrete_location(65,2155 + void assign_neighbor(66,2185 +class agent:agent75,2509 + agent(79,2579 + ~agent(80,2592 + void move(81,2606 + +cp-src/fail.C,315 +struct A 7,263 + struct B 8,274 + struct C 9,289 + C(11,318 + operator int(operator int12,342 + typedef C T;14,389 + typedef B T2;16,414 +class String;20,437 +class A 23,453 + class B 24,463 + class C 25,474 + int f(26,488 +int A::B::f(f31,521 +main(37,571 + class D 41,622 + D(43,659 + +el-src/TAGTEST.EL,148 +(foo::defmumble bletch 1,0 +(defalias 'pending-delete-mode pending-delete-mode5,102 +(defalias (quote explicitly-quoted-pending-delete-mode)8,175 + +el-src/emacs/lisp/progmodes/etags.el,5188 +(defvar tags-file-name 34,1034 +(defgroup etags 43,1498 +(defcustom tags-case-fold-search 47,1566 +(defcustom tags-table-list 59,2051 +(defcustom tags-compression-info-list69,2449 +(defcustom tags-add-tables 88,3231 +(defcustom tags-revert-without-query 98,3627 +(defvar tags-table-computed-list 103,3778 +(defvar tags-table-computed-list-for 112,4262 +(defvar tags-table-list-pointer 117,4510 +(defvar tags-table-list-started-at 121,4701 +(defvar tags-table-set-list 124,4821 +(defcustom find-tag-hook 129,5000 +(defcustom find-tag-default-function 137,5263 +(define-obsolete-variable-alias 'find-tag-marker-ring-lengthfind-tag-marker-ring-length145,5602 +(defcustom tags-tag-face 148,5699 +(defcustom tags-apropos-verbose 154,5834 +(defcustom tags-apropos-additional-actions 160,5998 +(defvaralias 'find-tag-marker-ring find-tag-marker-ring183,6917 +(defvar default-tags-table-function 189,7097 +(defvar tags-location-ring 194,7323 +(defvar tags-table-files 201,7599 +(defvar tags-completion-table 206,7766 +(defvar tags-included-tables 209,7858 +(defvar next-file-list 212,7953 +(defvar tags-table-format-functions 217,8059 +(defvar file-of-tag-function 224,8440 +(defvar tags-table-files-function 228,8634 +(defvar tags-completion-table-function 230,8745 +(defvar snarf-tag-function 232,8840 +(defvar goto-tag-location-function 236,9049 +(defvar find-tag-regexp-search-function 239,9222 +(defvar find-tag-regexp-tag-order 241,9343 +(defvar find-tag-regexp-next-line-after-failure-p 243,9452 +(defvar find-tag-search-function 245,9572 +(defvar find-tag-tag-order 247,9679 +(defvar find-tag-next-line-after-failure-p 249,9774 +(defvar list-tags-function 251,9880 +(defvar tags-apropos-function 253,9968 +(defvar tags-included-tables-function 255,10062 +(defvar verify-tags-table-function 257,10181 +(defun initialize-new-tags-table 260,10292 +(defun tags-table-mode 276,10980 +(defun visit-tags-table 285,11245 +(defun tags-table-check-computed-list 321,12783 +(defun tags-table-extend-computed-list 360,14654 +(defun tags-expand-table-name 400,16367 +(defun tags-table-list-member 409,16710 +(defun tags-verify-table 421,17182 +(defun tags-table-including 470,19302 +(defun tags-next-table 522,21346 +(defun visit-tags-table-buffer 543,22203 +(defun tags-reset-tags-tables 712,28513 +(defun file-of-tag 731,29170 +(defun tags-table-files 740,29519 +(defun tags-included-tables 749,29869 +(defun tags-completion-table 755,30115 +(defun tags-lazy-completion-table 783,31309 +(defun tags-completion-at-point-function 799,31944 +(defun find-tag-tag 818,32694 +(defvar last-tag 837,33367 +(defun find-tag-interactive 840,33426 +(defvar find-tag-history 852,33841 +(defvar etags-case-fold-search)855,33906 +(defvar etags-syntax-table)856,33938 +(defvar local-find-tag-hook)857,33966 +(defun find-tag-noselect 860,34011 +(defun find-tag 932,37125 +(defun find-tag-other-window 959,38341 +(defun find-tag-other-frame 1000,40269 +(defun find-tag-regexp 1025,41443 +(defalias 'pop-tag-mark pop-tag-mark1049,42605 +(defvar tag-lines-already-matched 1052,42656 +(defun find-tag-in-order 1055,42763 +(defun tag-find-file-of-tag-noselect 1167,47109 +(defun tag-find-file-of-tag 1200,48955 +(defun etags-recognize-tags-table 1208,49181 +(defun etags-verify-tags-table 1241,50812 +(defun etags-file-of-tag 1246,51010 +(defun etags-tags-completion-table 1256,51345 +(defun etags-snarf-tag 1286,52551 +(defun etags-goto-tag-location 1324,54120 +(defun etags-list-tags 1388,56563 +(defmacro tags-with-face 1423,57838 +(defun etags-tags-apropos-additional 1431,58171 +(defun etags-tags-apropos 1465,59408 +(defun etags-tags-table-files 1527,61617 +(defun etags-tags-included-tables 1542,62053 +(defun tags-recognize-empty-tags-table 1559,62593 +(defun tag-exact-file-name-match-p 1587,63739 +(defun tag-file-name-match-p 1596,64132 +(defun tag-exact-match-p 1609,64688 +(defun tag-implicit-name-match-p 1620,65256 +(defun tag-symbol-match-p 1633,65856 +(defun tag-word-match-p 1643,66292 +(defun tag-partial-file-name-match-p 1652,66690 +(defun tag-any-match-p 1662,67134 +(defun tag-re-match-p 1667,67318 +(defcustom tags-loop-revert-buffers 1675,67567 +(defun next-file 1685,67976 +(defvar tags-loop-operate 1760,70890 +(defvar tags-loop-scan1763,70984 +(defun tags-loop-eval 1771,71313 +(defun tags-loop-continue 1782,71642 +(defun tags-search 1850,73948 +(defun tags-query-replace 1871,74774 +(defun tags-complete-tags-table-file 1896,75998 +(defun list-tags 1906,76377 +(defun tags-apropos 1934,77330 +(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78156 +(defun select-tags-table 1964,78395 +(defvar select-tags-table-mode-map 2019,80522 +(define-derived-mode select-tags-table-mode 2030,80905 +(defun select-tags-table-select 2034,81089 +(defun select-tags-table-quit 2043,81455 +(defun complete-tag 2049,81610 +(defconst etags--xref-limit 2074,82551 +(defvar etags-xref-find-definitions-tag-order 2076,82586 +(defun etags-xref-find 2082,82876 +(defun etags--xref-find-definitions 2096,83405 +(defclass xref-etags-location 2129,85119 +(defun xref-make-etags-location 2135,85342 +(cl-defmethod xref-location-marker 2139,85497 +(cl-defmethod xref-location-line 2146,85741 + +erl-src/gs_dialog.erl,98 +-define(VERSION2,32 +behaviour_info(51,2177 +show(124,5458 +dialog_loop(219,9529 +test(252,10806 + +f-src/entry.for,172 + LOGICAL FUNCTION PRTPKG 3,75 + ENTRY SETPRT 194,3866 + ENTRY MSGSEL 395,8478 + & intensity1(577,12231 + character*(*) function foo(579,12307 + +f-src/entry.strange_suffix,172 + LOGICAL FUNCTION PRTPKG 3,75 + ENTRY SETPRT 194,3866 + ENTRY MSGSEL 395,8478 + & intensity1(577,12231 + character*(*) function foo(579,12307 + +f-src/entry.strange,172 + LOGICAL FUNCTION PRTPKG 3,75 + ENTRY SETPRT 194,3866 + ENTRY MSGSEL 395,8478 + & intensity1(577,12231 + character*(*) function foo(579,12307 + +forth-src/test-forth.fth,408 +: a-forth-word 20,301 +99 constant a-forth-constant!22,343 +55 value a-forth-value?23,373 +create :a-forth-dictionary-entry24,397 +defer #a-defer-word27,460 +: (another-forth-word)(another-forth-word29,481 + 9 field >field136,582 + 5 field >field237,605 +constant (a-forth-constant(a-forth-constant38,628 +2000 buffer: #some-storage41,657 +code assemby-code-word 43,685 +: a-forth-word 50,870 + +go-src/test.go,48 +package main1,0 +func say(5,28 +func main(9,72 + +go-src/test1.go,119 +package main1,0 +func (s str) PrintAdd(17,136 +func (n intNumber) PrintAdd(21,189 +func test(25,248 +func main(29,285 + +html-src/softwarelibero.html,200 +Cos'è il software libero?4,38 +Licenze d'uso di un programmalicenze65,2500 +Sfatiamo alcuni miti138,6118 +Il movimento open sourceoss191,8037 +Impatto pratico del software liberoimpatto231,10066 + +html-src/index.shtml,104 + 8,281 +In evidenza15,447 +Comunicati e iniziative32,976 +Ultime notizie dall'associazione63,2030 + +html-src/algrthms.html,467 +Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms7,277 +Descriptionalgorithms10,481 +Generating the Datagenalgorithm48,1995 +Convolutionallyconalgorithm55,2512 +Nextstatetable262,11587 +Outputoutputtable350,13915 +Mapping the Channel Symbolsmapping433,16213 +Adding Noise to theaddnoise439,16607 +Quantizing the Receivedquantizing469,19100 + +html-src/software.html,439 +Francesco Potortì Software Page9,280 +Software that I wrote for supporting my research activitysimulation36,1398 +MTGmtg41,1482 +Fracasfracas65,2624 +GaliLEOgalileo101,4232 +Leasqrleasqr114,4677 +Free software that I wrote for the GNU project or for my personal or workgnu142,6065 +Etagsetags148,6180 +checkiso161,6729 +cgrep178,7547 +debian-bug.eldebian-bug190,7979 +tcpdump205,8564 +Links to interesting softwarelinks216,8891 + +lua-src/allegro.lua,400 +local function get_layer_by_name 7,175 +local function count_layers 33,621 +function GetLayerByName 54,980 +function GetUniqueLayerName 65,1204 +function SelectLayer 76,1415 +function NewLayer 86,1773 +function NewLayerSet 144,3226 +function RemoveLayer 170,3750 +function MoveLayerTop 211,4767 +function MoveLayerBottom 223,5079 +function MoveLayerBefore 236,5457 +function MoveLayerAfter 258,6090 + +lua-src/test.lua,442 +function Rectangle.getPos 2,15 +function Rectangle.getPos getPos2,15 +function Circle.getPos 6,61 +function Circle.getPos getPos6,61 +function Cube.data.getFoo 10,102 +function Cube.data.getFoo getFoo10,102 +function Square.something:Bar 14,148 +function Square.something:Bar Bar14,148 + function test.me_22a(22,241 + function test.me_22a(me_22a22,241 + local function test.me22b 25,297 + local function test.me22b me22b25,297 + +make-src/Makefile,2175 +LATEST=1,0 +RELEASELIST=2,10 +ADASRC=4,104 +ASRC=5,171 +CSRC=6,197 +CPSRC=10,423 +ELSRC=13,614 +ERLSRC=14,661 +FORTHSRC=15,702 +FSRC=16,726 +HTMLSRC=17,776 +JAVASRC=18,844 +LUASRC=19,907 +MAKESRC=20,926 +OBJCSRC=21,943 +OBJCPPSRC=22,999 +PASSRC=23,1035 +PERLSRC=24,1053 +PHPSRC=25,1108 +PSSRC=26,1156 +PROLSRC=27,1173 +PYTSRC=28,1210 +TEXSRC=29,1227 +YSRC=30,1282 +SRCS=31,1325 +NONSRCS=35,1577 +VHDLFLAGS=37,1624 +COBOLFLAGS=38,1827 +POSTSCRIPTFLAGS=39,1889 +TCLFLAGS=40,1943 +GETOPTOBJS=42,2002 +RXINCLUDE=43,2034 +REGEXOBJS=44,2056 +CHECKOBJS=46,2075 +CHECKFLAGS=47,2105 +OBJS=48,2145 +CPPFLAGS=49,2190 +LDFLAGS=50,2259 +WARNINGS=51,2282 +CFLAGS=52,2466 +FASTCFLAGS=55,2530 +FASTCFLAGSWARN=56,2591 +FILTER=58,2641 +REGEX=59,2695 +xx=60,2741 +MAKE:MAKE62,2790 +RUN=63,2825 +RUN=64,2865 +OPTIONS=65,2870 +ARGS=66,2922 +infiles 68,2940 +quiettest:quiettest70,3002 +test:test79,3409 +${CHECKOBJS}:${CHECKOBJS}88,3805 +checker:checker90,3849 +standalone:standalone96,4062 +prof:prof101,4168 +fastetags:fastetags104,4198 +fastctags:fastctags108,4322 +staticetags:staticetags112,4446 +rsynctofly:rsynctofly116,4608 +rsyncfromfly:rsyncfromfly119,4698 +web ftp publish:web ftp publish122,4794 +release distrib:release distrib129,5115 +tags:tags134,5255 +clean:clean136,5267 +srclist:srclist139,5302 +regexfile:regexfile143,5391 +/home/www/pub/etags.c.gz:/home/www/pub/etags.c.gz149,5566 +/home/www/pub/software/unix/etags.tar.gz:/home/www/pub/software/unix/etags.tar.gz156,5825 +regex.o:regex.o159,6031 +getopt.o:getopt.o162,6086 +getopt1.o:getopt1.o165,6147 +etags:etags168,6210 +ctags:ctags171,6299 +man manpage:man manpage174,6396 +etags.1.man:etags.1.man176,6422 +maintaining.info:maintaining.info179,6475 +TAGS:TAGS182,6557 +%ediff:%ediff185,6587 +oediff:oediff188,6677 +%cdiff:%cdiff191,6764 +xdiff:xdiff194,6854 +ETAGS:ETAGS197,6942 +ETAGS%:ETAGS%200,7012 +ETAGS13 ETAGS14 ETAGS15:ETAGS13 ETAGS14 ETAGS15203,7084 +ETAGS12:ETAGS12206,7216 +OTAGS:OTAGS209,7304 +CTAGS:CTAGS212,7369 +CTAGS%:CTAGS%215,7443 +CTAGS13 CTAGS14 CTAGS15:CTAGS13 CTAGS14 CTAGS15218,7545 +EXTAGS:EXTAGS221,7680 +.PRECIOUS:.PRECIOUS224,7838 +FRC:FRC226,7894 + +objc-src/Subprocess.h,98 +#define Subprocess 41,1217 +#define BUFFERSIZE 43,1267 +@interface Subprocess:Subprocess45,1292 + +objc-src/Subprocess.m,476 +#define PTY_TEMPLATE 20,494 +#define PTY_LENGTH 21,528 +static void showError(23,551 +@interface Subprocess(Private)32,737 +- childDidExit39,851 +- fdHandler:fdHandler67,1589 +showError 98,2360 +fdHandler 112,2785 +getptys 119,2907 +- init:init183,4815 + andStdErr:init197,5147 +- send:(const char *)string withNewline:send300,7436 +- send:send308,7599 +- terminateInput314,7689 +- terminate:terminate321,7810 +- setDelegate:setDelegate332,7961 +- delegate338,8031 + +objc-src/PackInsp.h,109 +#define NUMSTATS 36,1101 +#define TYPESTOSTAT 37,1120 +@interface PackageInspector:PackageInspector39,1172 + +objc-src/PackInsp.m,1322 +static const char RCSid[RCSid30,1032 +#define VERSION 34,1116 +# define DEBUG 37,1155 +#define LISTCONTENTS 39,1181 +#define OPENBUTTON 47,1352 +#define LISTCONTENTSBUTTON 48,1449 +#define LISTDESCRIPTIONBUTTON 49,1562 +#define STATE_UNINSTALLED 52,1687 +#define STATE_INSTALLED 53,1807 +#define STATE_COMPRESSD 54,1948 +#define SIZEFORMAT 57,2152 +#define KBYTES 58,2362 +#define MBYTES 59,2473 +#define LOCALIZE(61,2585 +#define LOCALIZE_ARCH(62,2668 ++newnew67,2802 +-showInfo:showInfo93,3417 +-revert:revert107,3737 +-ok:ok136,4297 +-loadload143,4424 +#define LOOKUP(156,4826 +#undef LOOKUP176,5694 +-loadKeyValuesFrom:(const char *)type inTable:loadKeyValuesFrom186,5852 +-loadContentsOf:(const char *)type inTable:loadContentsOf238,7079 +-loadImageloadImage257,7552 +#define STAT_EQ(275,7940 +-(BOOL)shouldLoad280,8116 +-toggleDescriptiontoggleDescription301,8626 +-(const char *)getPath:(char *)buf forType:getPath317,8899 +-setRevertButtonTitlesetRevertButtonTitle333,9320 +-(const char *)formatSize:(const char *)size inBuf:formatSize344,9525 +#define WORKING 368,10045 +-(void)getArchs370,10100 +-(void)addArchs:addArchs385,10520 +-subprocess:(Subprocess *)sender output:subprocess428,11351 +-subprocessDone:subprocessDone436,11484 +static void openInWorkspace(446,11634 +-open:open464,12063 + +objcpp-src/SimpleCalc.H,41 +@interface SimpleCalc:SimpleCalc14,400 + +objcpp-src/SimpleCalc.M,445 +- init52,1747 +- appendToDisplay:appendToDisplay60,1933 +- registerAction:registerAction70,2210 +- decimalKey:decimalKey77,2348 +- numberKeys:numberKeys91,2661 +- equalsKey:equalsKey112,3192 +- operationKeys:operationKeys131,3680 +- clearKey:clearKey153,4301 +- clearAllKey:clearAllKey160,4410 +- appDidInit:appDidInit168,4591 +- windowWillClose:windowWillClose178,4882 +- infoPanel:infoPanel186,5132 +- helpPanel:helpPanel198,5482 + +pas-src/common.pas,1875 +procedure InitializeStringPackage;26,527 +function newtextstring;34,874 +procedure disposetextstring;52,1404 +function ConcatT;78,2066 +function AppendTextString;112,3238 +function CopyTextString;132,3947 +procedure CONVERT_CHARSTRING_TO_VALUE;151,4505 +procedure append_string;172,5166 +function To_Upper;186,5462 +function To_Lower;194,5617 +function EmptyNmStr(209,6213 +function chartonmstr;219,6436 +function LowerCaseNmStr;230,6682 +function concatenatenamestrings;242,7007 +procedure writenamestring;263,7517 +function IsControlChar;277,7928 +function namestringequal;283,8079 +function NameStringLess;302,8539 +function IsControlCharName(343,9710 +function SubString;358,10208 +function SkipChars;379,10791 +function RemoveUnderlineControl;397,11311 +procedure First100Chars;427,12162 +procedure SkipSpaces;462,13298 +function SkipBlanks;477,13782 +function stripname;505,14595 +function Locate;522,15039 +function NameHasChar;543,15581 +function integertonmstr;561,16134 +function NmStrToInteger;585,16901 +function AddNullToNmStr;600,17317 +function ValToNmStr;611,17585 +function ChangeFileType;625,18037 +function StripPath;647,18734 +function ReprOfChar;675,19343 +procedure ExtractCommentInfo;702,20749 +procedure INSERT_TREE_NODE;784,24053 +function GetNameList;920,27926 +procedure DisposeANameList(925,28010 +procedure DisposeNameList;938,28340 +function GetNewNameListNode;943,28409 +function insertname;972,29051 +procedure InitNameList;988,29471 +procedure InitNameStringPool;998,29767 +procedure NewNameString;1004,29867 +procedure ReleaseNameString;1022,30232 +procedure SDTrefStringToRec 1045,30741 +procedure SDTrefSkipSpaces;1059,31092 +function SDTrefIsEnd 1070,31323 +function SDTrefGetInteger 1082,31529 +procedure SDTrefRecToString 1303,37546 +function NmStrToErrStr;1497,42305 +function ErrStrToNmStr;1509,42557 +function GetTextRef;1529,43112 + +php-src/lce_functions.php,2152 + define("LCE_FUNCTIONS"LCE_FUNCTIONS4,38 + define("LCE_UNKNOWN"LCE_UNKNOWN9,145 + define("LCE_WS"LCE_WS11,194 + define("LCE_COMMENT"LCE_COMMENT13,244 + define("LCE_COMMENT_USER"LCE_COMMENT_USER15,303 + define("LCE_COMMENT_TOOL"LCE_COMMENT_TOOL17,366 + define("LCE_MSGID"LCE_MSGID19,430 + define("LCE_MSGSTR"LCE_MSGSTR21,488 + define("LCE_TEXT"LCE_TEXT23,541 + define("STATE_ABORT"STATE_ABORT25,567 + define("STATE_OK"STATE_OK26,595 + define("STATE_LOOP"STATE_LOOP27,620 + class POEntryAD 29,648 + function validate(31,683 + function checkQuotation(59,1384 + class CommentAD 70,1639 + function CommentAD(73,1693 + function validate(83,1944 + class POEntry 105,2410 + function POEntry(119,2711 + function lineCount(135,3255 + function serializeToVars(141,3365 + function write(151,3800 + class POReader 163,4178 + function gettext(177,4457 + function parseFromVars(189,4705 + function serializeToVars(215,5331 + function POReader(229,5613 + function read(243,5983 + function write(259,6307 + function isComment(277,6645 + function comment(284,6822 + function msgid(304,7247 + function msgstr(320,7574 + function start(340,8232 + function createPOEntries(360,8644 + function stripLine(394,9472 + function printClassification(421,10056 + function classifyLine(432,10301 + function getTextDomains(471,11094 + class PORManager 498,11756 + function PORManager(502,11822 + function addPOReader(507,11896 + function &getPOReader(getPOReader512,11992 + function getDomainNames(517,12081 + function &loadPORManager(loadPORManager523,12174 + function fileJoin(536,12436 + function lce_bindtextdomain(557,12839 + function lce_textdomain(614,14530 + function lce_gettext(620,14641 + function lce_dgettext(626,14767 + function lce(634,14966 + function lce_bindtextdomain(651,15488 + function lce_textdomain(656,15592 + function lce_gettext(661,15674 + function lce_dgettext(666,15755 + function lce(670,15855 + function lce_geteditcode(676,15898 + +php-src/ptest.php,46 +define("TEST"TEST1,0 +test 4,26 +foo(16,200 + - perl-src/htlmify-cystic,1443 ++perl-src/htlmify-cystic,1197 +my @section_name;section_name12,236 +my @appendix_name;appendix_name13,254 +my @section_toc;section_toc15,274 +my @appendix_toc;appendix_toc16,291 +my $new_tag new_tag18,310 +my $appendix;appendix24,409 +my $section;section25,423 +my $subsection;subsection26,436 +my $subsubsection;subsubsection27,452 +my $this_file_toc this_file_toc29,472 +my %file_tocs;file_tocs30,496 +my @output_files output_files32,512 +my $file_index file_index33,535 +my $output_file;output_file35,556 +my $line;line37,574 +my $subsection_marker;subsection_marker161,3883 +my $new;new163,3907 - sub read_toc main::read_toc165,3917 ++sub read_toc 165,3917 + my $entry entry218,5621 + my $entry entry234,6077 + my $entry entry245,6351 + my $entry entry252,6536 + my $entry entry268,7010 + my $entry entry276,7204 + my $entry entry281,7328 + my $entry entry296,7698 - sub finish_subsubsections main::finish_subsubsections302,7805 - sub finish_subsections main::finish_subsections309,7987 - sub finish_sections main::finish_sections320,8310 - sub finish_appendices main::finish_appendices331,8599 - sub section_url_base main::section_url_base337,8724 - sub section_url_name main::section_url_name342,8922 - sub section_url main::section_url355,9284 ++sub finish_subsubsections 302,7805 ++sub finish_subsections 309,7987 ++sub finish_sections 320,8310 ++sub finish_appendices 331,8599 ++sub section_url_base 337,8724 ++sub section_url_name 342,8922 ++sub section_url 355,9284 + my $name name357,9336 - sub section_href main::section_href364,9452 - sub section_name main::section_name368,9551 - sub toc_line main::toc_line372,9655 - sub file_end main::file_end375,9750 ++sub section_href 364,9452 ++sub section_name 368,9551 ++sub toc_line 372,9655 ++sub file_end 375,9750 + - perl-src/yagrip.pl,258 - sub getopt main::getopt7,156 ++perl-src/yagrip.pl,233 ++sub getopt 7,156 + local($_,$flag,$opt,$f,$r,@temp)($_,$flag,$opt,$f,$r,@temp8,169 - sub usage main::usage38,856 ++sub usage 38,856 + local($prog,$_,@list)($prog,$_,@list39,868 + local($string,$flag,@string,@temp,@last)($string,$flag,@string,@temp,@last40,897 + - perl-src/kai-test.pl,244 - sub f1 main::f12,16 - sub main::f2 6,50 ++perl-src/kai-test.pl,203 ++sub f1 2,16 ++sub main::f2 f26,50 +package Foo;10,90 - sub f3 Foo::f312,104 - sub Bar::f4 16,138 ++sub f3 12,104 ++sub Bar::f4 f416,138 +package Bar;20,177 - sub f5 Bar::f522,191 ++sub f5 22,191 +package Foo::Bar;26,225 - sub f6 Foo::Bar::f628,244 ++sub f6 28,244 +package main;32,278 - sub f7 main::f734,293 ++sub f7 34,293 + +ps-src/rfc1245.ps,2478 +/FMversion 12,311 +/FrameDict 17,500 +/FMVERSION 47,1307 +/FMLOCAL 56,1494 +/FMDOCUMENT 73,1766 +/FMBEGINPAGE 95,2279 +/FMENDPAGE 109,2516 +/FMDEFINEFONT 115,2582 +/FMNORMALIZEGRAPHICS 126,2725 +/FMBEGINEPSF 142,2955 +/FMENDEPSF 153,3207 +/setmanualfeed 158,3283 +/max 163,3386 +/min 164,3426 +/inch 165,3466 +/pagedimen 166,3485 +/setpapername 172,3629 +/papersize 190,4214 +/manualpapersize 211,4789 +/desperatepapersize 230,5211 +/savematrix 239,5370 +/restorematrix 242,5425 +/dmatrix 245,5475 +/dpi 246,5495 +/freq 248,5583 +/sangle 249,5658 +/DiacriticEncoding 250,5717 +/.notdef 251,5738 +/.notdef 252,5801 +/.notdef 253,5864 +/.notdef 254,5927 +/.notdef 255,5990 +/numbersign 256,6051 +/parenright 257,6115 +/two 258,6184 +/less 259,6251 +/L 260,6320 +/bracketright 261,6389 +/i 262,6459 +/braceright 263,6529 +/Ntilde 264,6598 +/atilde 265,6668 +/iacute 266,6733 +/ocircumflex 267,6797 +/udieresis 268,6858 +/paragraph 269,6919 +/dieresis 270,6983 +/yen 271,7050 +/ordfeminine 272,7109 +/exclamdown 273,7171 +/guillemotleft 274,7230 +/Otilde 275,7296 +/quoteleft 276,7357 +/fraction 277,7420 +/periodcentered 278,7490 +/Acircumflex 279,7549 +/Icircumflex 280,7610 +/Uacute 281,7680 +/breve 282,7746 +/ReEncode 284,7814 +/graymode 300,8020 +/setpattern 310,8184 +/grayness 331,8725 +/normalize 394,9873 +/dnormalize 397,9942 +/lnormalize 400,10014 +/H 403,10104 +/Z 406,10147 +/X 409,10176 +/V 412,10219 +/N 415,10260 +/M 418,10286 +/E 419,10315 +/D 420,10336 +/O 421,10358 +/L 423,10394 +/Y 430,10489 +/R 439,10588 +/RR 450,10696 +/C 467,10959 +/U 473,11004 +/F 477,11039 +/T 481,11084 +/RF 484,11115 +/TF 488,11164 +/P 495,11219 +/PF 499,11270 +/S 506,11344 +/SF 510,11384 +/B 517,11446 +/BF 521,11505 +/W 538,11714 +/G 573,12382 +/A 582,12525 +/BEGINPRINTCODE 606,12918 +/ENDPRINTCODE 615,13131 +/gn 620,13259 +/cfs 631,13384 +/ic 636,13473 +/ms 658,14285 +/ip 668,14395 +/wh 678,14492 +/bl 684,14607 +/s1 690,14722 +/fl 691,14739 +/hx 698,14887 +/wbytes 709,15055 +/BEGINBITMAPBWc 713,15147 +/BEGINBITMAPGRAYc 716,15198 +/BEGINBITMAP2BITc 719,15251 +/COMMONBITMAPc 722,15304 +/BEGINBITMAPBW 739,15660 +/BEGINBITMAPGRAY 742,15709 +/BEGINBITMAP2BIT 745,15760 +/COMMONBITMAP 748,15811 +/Fmcc 765,16156 +/ngrayt 773,16371 +/nredt 774,16393 +/nbluet 775,16414 +/ngreent 776,16436 +/colorsetup 787,16603 +/fakecolorsetup 814,17370 +/BITMAPCOLOR 826,17636 +/BITMAPCOLORc 839,17926 +/BITMAPGRAY 855,18275 +/BITMAPGRAYc 858,18335 +/ENDBITMAP 861,18397 +/fillprocs 868,18497 + +prol-src/ordsets.prolog,525 +is_ordset(47,1310 +list_to_ord_set(63,1688 +ord_add_element(71,1867 +ord_del_element(85,2344 +ord_disjoint(100,2783 +ord_intersect(108,2953 +ord_intersection(126,3552 +ord_intersection3(130,3691 +ord_intersection(150,4531 +ord_intersection4(154,4703 +ord_intersection(176,5664 +ord_intersection2(181,5812 +ord_member(200,6318 +ord_seteq(216,6683 +ord_setproduct(225,6971 +ord_subset(240,7377 +ord_subtract(257,7861 +ord_symdiff(265,8054 +ord_union(288,8887 +ord_union4(303,9352 +ord_union(324,10171 +ord_union_all(329,10313 + +prol-src/natded.prolog,2319 +expandmng(100,2879 +normalize(116,3359 +fresh_vars(125,3716 +subst(138,4134 +normalize_fresh(159,4660 +reduce_subterm(171,5112 +reduce(185,5559 +free_var(196,5903 +free_for(209,6246 +compile_lex(231,6875 +consult_lex:-consult_lex248,7384 +lex(259,7754 +expandsyn(267,8068 +bas_syn(292,8897 +compile_empty:-compile_empty310,9376 +complete(328,10055 +add_active(340,10527 +parse(353,10949 +derived_analyses(364,11341 +build(378,11965 +buildact(392,12521 +mapsyn(412,13542 +add_edge(434,14278 +findcats(447,14758 +normalize_tree(465,15478 +normalize_trees(475,15856 +expandmng_tree(486,16248 +expandmng_trees(496,16614 +cat(511,17013 +subtree(644,21266 +hypothetical_mem(653,21565 +make_coor(667,22130 +start_up:-start_up688,23013 +tokenizeatom(710,23921 +tokenize(720,24348 +isoperator(752,25377 +isoptab(756,25431 +specialsymbol(765,25756 +sstab(771,25861 +parse_cgi(787,26347 +keyvalseq(792,26510 +andkeyvalseq(796,26609 +keyval(799,26688 +valseq(807,26920 +plusvalseq(810,27007 +val(816,27109 +argvals(824,27426 +commaargvals(828,27503 +atomval(833,27578 +atom(836,27640 +action(846,28004 +keyvalcgi(864,28649 +keyvalscgi(865,28670 +outsyn(868,28726 +act(876,29060 +actout(901,29906 +texttreelist(912,30089 +htmltreelist(918,30190 +fitchtreelist(924,30304 +pp_html_table_tree(938,30759 +pp_html_tree(949,31113 +pp_html_trees(988,32381 +pp_html_table_fitch_tree(999,32769 +pp_html_fitch_tree(1017,33672 +removeexp(1129,39002 +splitexp(1142,39490 +pp_exp(1155,39990 +map_word(1168,40249 +pp_exps(1180,40474 +pp_tree(1188,40777 +pp_trees(1216,41807 +pp_word_list(1225,42128 +pp_word(1231,42262 +pp_word_list_rest(1238,42569 +pp_cat(1248,42929 +pp_syn(1255,43196 +pp_syn_paren(1276,43899 +pp_paren(1293,44377 +pp_syn_back(1300,44661 +pp_bas_cat(1311,45001 +writecat(1322,45409 +writesubs(1351,46455 +writesups(1361,46757 +writelistsubs(1371,47090 +pp_lam(1380,47408 +pp_lam_bracket(1398,48022 +pp_lam_paren(1407,48338 +pp_rule(1429,49238 +member(1447,49866 +append_list(1451,49919 +append(1456,50010 +at_least_one_member(1460,50076 +numbervars(1464,50171 +reverse(1467,50209 +select(1471,50290 +select_last(1475,50357 +cat_atoms(1479,50436 +writelist(1485,50524 +write_lex_cat(1492,50676 +writebreaklex(1500,50988 +write_lex(1513,51265 +writebreak(1521,51541 +tt:-tt1531,51713 +mt:-mt1534,51784 +cmt:-cmt1537,51878 + +pyt-src/server.py,1438 +class Controls:Controls17,358 + def __init__(18,374 + def __repr__(24,590 + def __str__(34,871 +class Server:Server37,934 + def __init__(38,948 + def dump(73,2198 + def __repr__(125,3896 + def __str__(128,3945 +class User:User131,4014 + def __init__(132,4026 + def __repr__(172,5445 + def __str__(206,6883 +def flag2str(223,7212 +class LabeledEntry(232,7442 + def bind(234,7525 + def focus_set(236,7584 + def __init__(238,7629 +def ButtonBar(245,7909 +def helpwin(255,8280 +class ListEdit(267,8707 + def __init__(269,8808 + def handleList(303,10042 + def handleNew(306,10094 + def editItem(314,10426 + def deleteItem(320,10596 +def ConfirmQuit(326,10760 +class ControlEdit(375,12377 + def PostControls(376,12403 + def GatherControls(421,13530 +class ServerEdit(512,16264 + def __init__(513,16289 + def post(525,16629 + def gather(543,17191 + def nosave(547,17304 + def save(551,17408 + def refreshPort(556,17509 + def createWidgets(561,17663 + def edituser(631,20708 +class UserEdit(645,20921 + def __init__(646,20944 + def post(658,21283 + def gather(676,21841 + def nosave(680,21950 + def save(684,22052 + def createWidgets(689,22151 +class Configure(760,24879 + def __init__(761,24916 + def MakeDispose(772,25211 + def MakeSitelist(786,25706 + def editsite(794,25949 + def save(797,26022 + def nosave(807,26310 + +ruby-src/test.rb,637 +module ModuleExample1,0 + class ClassExample2,21 + def instance_method3,44 + def ClassExample.class_methodclass_method6,121 + def instance_method_exclamation!9,206 + def instance_method_question?12,310 + def instance_method_equals=instance_method_equals=15,408 + def `(18,502 + def +(21,592 + def [](24,640 + def []=([]=27,690 + def <<(30,752 + def ==(==33,802 + def <=(<=36,872 + def <=>(<=>39,943 + def ===(===42,990 + def module_instance_method46,1051 + def ModuleExample.module_class_methodmodule_class_method49,1131 + +ruby-src/test1.ru,935 +class A1,0 + def a(2,8 + def b(5,38 +module A9,57 + class B10,66 + ABC 11,76 + Def_ 12,88 + Xyzzy 13,106 + def foo!15,121 + def self._bar?(_bar?18,143 + def qux=(qux=22,194 + attr_reader :foofoo26,233 + attr_reader :read1 read127,254 + attr_reader :read1 , :read2;read227,254 + attr_reader :read1 , :read2; attr_writer :write1,write1=27,254 + attr_reader :read1 , :read2; attr_writer :write1, :write2write2=27,254 + attr_writer :bar,bar=28,316 + :baz,baz=29,338 + :moremore=30,360 + attr_accessor :teetee31,382 + attr_accessor :teetee=31,382 + alias_method :qux,qux32,405 + alias_method :xyz,xyz33,456 + :tee ; attr_reader :subtlesubtle34,479 + attr_reader(:foo1,foo135,523 + attr_reader(:foo1, :bar1,bar135,523 + :qux1)qux136,563 + alias_method ( :foo2,foo237,586 +A::Constant Constant42,655 + +tex-src/testenv.tex,52 +\newcommand{\nm}\nm4,77 +\section{blah}blah8,139 + +tex-src/gzip.texi,303 +@node Top,62,2139 +@node Copying,80,2652 +@node Overview,83,2705 +@node Sample,166,7272 +@node Invoking gzip,Invoking gzip210,8828 +@node Advanced usage,Advanced usage357,13495 +@node Environment,420,15207 +@node Tapes,437,15768 +@node Problems,460,16767 +@node Concept Index,Concept Index473,17287 + +tex-src/texinfo.tex,30627 +\def\texinfoversion{\texinfoversion26,1027 +\def\tie{\tie49,1518 +\def\gloggingall{\gloggingall72,2268 +\def\loggingall{\loggingall73,2337 +\def\onepageout#1{\onepageout99,3274 +\def\croppageout#1{\croppageout115,4024 +\def\cropmarks{\cropmarks142,5084 +\def\pagebody#1{\pagebody144,5131 +\def\ewtop{\ewtop157,5586 +\def\nstop{\nstop158,5650 +\def\ewbot{\ewbot160,5733 +\def\nsbot{\nsbot161,5797 +\def\parsearg #1{\parsearg170,6096 +\def\parseargx{\parseargx172,6174 +\def\parseargline{\parseargline182,6414 +\def\flushcr{\flushcr186,6535 +\newif\ifENV \ENVfalse \def\inENV{\inENV190,6734 +\def\ENVcheck{\ENVcheck191,6798 +\outer\def\begin{\begin198,7045 +\def\beginxxx #1{\beginxxx200,7083 +\def\end{\end208,7338 +\def\endxxx #1{\endxxx210,7366 +\def\errorE#1{\errorE216,7555 +\def\singlespace{\singlespace222,7749 +\def\@{\@232,7972 +\def\`{\`236,8072 +\def\'{\'237,8084 +\def\mylbrace {\mylbrace241,8132 +\def\myrbrace {\myrbrace242,8165 +\def\:{\:247,8279 +\def\*{\*250,8333 +\def\.{\.253,8409 +\def\w#1{\w258,8640 +\def\group{\group268,9123 + \def\Egroup{\Egroup273,9287 +\def\need{\need289,9729 +\def\needx#1{\needx300,10006 +\def\dots{\dots339,11392 +\def\page{\page343,11456 +\def\exdent{\exdent353,11783 +\def\exdentyyy #1{\exdentyyy354,11816 +\def\nofillexdent{\nofillexdent357,11960 +\def\nofillexdentyyy #1{\nofillexdentyyy358,12005 +\def\include{\include365,12189 +\def\includezzz #1{\includezzz366,12224 +\def\thisfile{\thisfile369,12275 +\def\center{\center373,12338 +\def\centerzzz #1{\centerzzz374,12371 +\def\sp{\sp380,12513 +\def\spxxx #1{\spxxx381,12538 +\def\comment{\comment387,12712 +\def\commentxxx #1{\commentxxx390,12809 +\def\ignoresections{\ignoresections396,12978 +\let\chapter=\relax=\relax397,13000 +\let\section=\relax=\relax406,13245 +\let\subsection=\relax=\relax409,13306 +\let\subsubsection=\relax=\relax410,13329 +\let\appendix=\relax=\relax411,13355 +\let\appendixsec=\relaxsec=\relax412,13376 +\let\appendixsection=\relaxsection=\relax413,13400 +\let\appendixsubsec=\relaxsubsec=\relax414,13428 +\let\appendixsubsection=\relaxsubsection=\relax415,13455 +\let\appendixsubsubsec=\relaxsubsubsec=\relax416,13486 +\let\appendixsubsubsection=\relaxsubsubsection=\relax417,13516 +\def\ignore{\ignore423,13618 +\long\def\ignorexxx #1\end ignore{\ignorexxx427,13758 +\def\direntry{\direntry429,13817 +\long\def\direntryxxx #1\end direntry{\direntryxxx430,13856 +\def\ifset{\ifset434,13966 +\def\ifsetxxx #1{\ifsetxxx436,14024 +\def\Eifset{\Eifset440,14151 +\def\ifsetfail{\ifsetfail441,14165 +\long\def\ifsetfailxxx #1\end ifset{\ifsetfailxxx442,14221 +\def\ifclear{\ifclear444,14282 +\def\ifclearxxx #1{\ifclearxxx446,14344 +\def\Eifclear{\Eifclear450,14475 +\def\ifclearfail{\ifclearfail451,14491 +\long\def\ifclearfailxxx #1\end ifclear{\ifclearfailxxx452,14551 +\def\set{\set456,14702 +\def\setxxx #1{\setxxx457,14729 +\def\clear{\clear460,14791 +\def\clearxxx #1{\clearxxx461,14822 +\def\iftex{\iftex466,14939 +\def\Eiftex{\Eiftex467,14952 +\def\ifinfo{\ifinfo468,14966 +\long\def\ifinfoxxx #1\end ifinfo{\ifinfoxxx469,15016 +\long\def\menu #1\end menu{\menu471,15075 +\def\asis#1{\asis472,15104 +\def\math#1{\math485,15647 +\def\node{\node487,15691 +\def\nodezzz#1{\nodezzz488,15729 +\def\nodexxx[#1,#2]{\nodexxx[489,15760 +\def\donoderef{\donoderef492,15822 +\def\unnumbnoderef{\unnumbnoderef496,15943 +\def\appendixnoderef{\appendixnoderef500,16074 +\expandafter\expandafter\expandafter\appendixsetref{setref501,16120 +\let\refill=\relaxill=\relax504,16209 +\def\setfilename{\setfilename509,16423 +\outer\def\bye{\bye518,16669 +\def\inforef #1{\inforef520,16725 +\def\inforefzzz #1,#2,#3,#4**{\inforefzzz521,16763 +\def\losespace #1{\losespace523,16860 +\def\sf{\sf532,17064 +\font\defbf=cmbx10 scaled \magstep1 %was 1314bf=cmbx10558,17859 +\font\deftt=cmtt10 scaled \magstep1tt=cmtt10559,17905 +\def\df{\df560,17941 +\def\resetmathfonts{\resetmathfonts635,20535 +\def\textfonts{\textfonts648,21124 +\def\chapfonts{\chapfonts653,21339 +\def\secfonts{\secfonts658,21555 +\def\subsecfonts{\subsecfonts663,21760 +\def\indexfonts{\indexfonts668,21977 +\def\smartitalicx{\smartitalicx691,22709 +\def\smartitalic#1{\smartitalic692,22785 +\let\cite=\smartitalic=\smartitalic698,22930 +\def\b#1{\b700,22954 +\def\t#1{\t703,22989 +\def\samp #1{\samp706,23141 +\def\key #1{\key707,23174 +\def\ctrl #1{\ctrl708,23235 +\def\tclose#1{\tclose716,23437 +\def\ {\720,23603 +\def\xkey{\xkey728,23872 +\def\kbdfoo#1#2#3\par{\kbdfoo729,23888 +\def\dmn#1{\dmn738,24189 +\def\kbd#1{\kbd740,24216 +\def\l#1{\l742,24273 +\def\r#1{\r744,24302 +\def\sc#1{\sc746,24370 +\def\ii#1{\ii747,24413 +\def\titlefont#1{\titlefont755,24646 +\def\titlepage{\titlepage761,24749 + \def\subtitlefont{\subtitlefont766,24976 + \def\authorfont{\authorfont768,25060 + \def\title{\title774,25270 + \def\titlezzz##1{\titlezzz775,25305 + \def\subtitle{\subtitle783,25620 + \def\subtitlezzz##1{\subtitlezzz784,25661 + \def\author{\author787,25779 + \def\authorzzz##1{\authorzzz788,25816 + \def\page{\page794,26107 +\def\Etitlepage{\Etitlepage804,26276 +\def\finishtitlepage{\finishtitlepage817,26664 +\def\evenheading{\evenheading846,27672 +\def\oddheading{\oddheading847,27715 +\def\everyheading{\everyheading848,27756 +\def\evenfooting{\evenfooting850,27802 +\def\oddfooting{\oddfooting851,27845 +\def\everyfooting{\everyfooting852,27886 +\def\headings #1 {\headings893,29578 +\def\HEADINGSoff{\HEADINGSoff895,29627 +\def\HEADINGSdouble{\HEADINGSdouble904,30054 +\def\HEADINGSsingle{\HEADINGSsingle914,30374 +\def\HEADINGSon{\HEADINGSon922,30595 +\def\HEADINGSafter{\HEADINGSafter924,30629 +\def\HEADINGSdoublex{\HEADINGSdoublex926,30724 +\def\HEADINGSsingleafter{\HEADINGSsingleafter933,30912 +\def\HEADINGSsinglex{\HEADINGSsinglex934,30973 +\def\today{\today943,31248 +\def\thistitle{\thistitle958,31793 +\def\settitle{\settitle959,31818 +\def\settitlezzz #1{\settitlezzz960,31855 +\def\internalBitem{\internalBitem992,32785 +\def\internalBitemx{\internalBitemx993,32835 +\def\internalBxitem "#1"{\internalBxitem995,32880 +\def\internalBxitemx "#1"{\internalBxitemx996,32960 +\def\internalBkitem{\internalBkitem998,33035 +\def\internalBkitemx{\internalBkitemx999,33087 +\def\kitemzzz #1{\kitemzzz1001,33134 +\def\xitemzzz #1{\xitemzzz1004,33236 +\def\itemzzz #1{\itemzzz1007,33339 +\def\item{\item1037,34410 +\def\itemx{\itemx1038,34461 +\def\kitem{\kitem1039,34514 +\def\kitemx{\kitemx1040,34567 +\def\xitem{\xitem1041,34622 +\def\xitemx{\xitemx1042,34675 +\def\description{\description1045,34785 +\def\table{\table1047,34835 +\def\ftable{\ftable1052,34979 +\def\Eftable{\Eftable1056,35125 +\def\vtable{\vtable1059,35194 +\def\Evtable{\Evtable1063,35340 +\def\dontindex #1{\dontindex1066,35409 +\def\fnitemindex #1{\fnitemindex1067,35429 +\def\vritemindex #1{\vritemindex1068,35474 +\def\tablez #1#2#3#4#5#6{\tablez1074,35623 +\def\Edescription{\Edescription1077,35681 +\def\itemfont{\itemfont1082,35883 +\def\Etable{\Etable1090,36109 +\def\itemize{\itemize1103,36433 +\def\itemizezzz #1{\itemizezzz1105,36469 +\def\itemizey #1#2{\itemizey1110,36564 +\def#2{1119,36810 +\def\itemcontents{\itemcontents1120,36851 +\def\bullet{\bullet1123,36899 +\def\minus{\minus1124,36926 +\def\frenchspacing{\frenchspacing1128,37034 +\def\splitoff#1#2\endmark{\splitoff1134,37259 +\def\enumerate{\enumerate1140,37489 +\def\enumeratezzz #1{\enumeratezzz1141,37528 +\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37581 + \def\thearg{\thearg1146,37728 + \ifx\thearg\empty \def\thearg{\thearg1147,37747 +\def\numericenumerate{\numericenumerate1184,39081 +\def\lowercaseenumerate{\lowercaseenumerate1190,39211 +\def\uppercaseenumerate{\uppercaseenumerate1203,39558 +\def\startenumeration#1{\startenumeration1219,40048 +\def\alphaenumerate{\alphaenumerate1227,40230 +\def\capsenumerate{\capsenumerate1228,40265 +\def\Ealphaenumerate{\Ealphaenumerate1229,40299 +\def\Ecapsenumerate{\Ecapsenumerate1230,40333 +\def\itemizeitem{\itemizeitem1234,40413 +\def\newindex #1{\newindex1259,41270 +\def\defindex{\defindex1268,41559 +\def\newcodeindex #1{\newcodeindex1272,41667 +\def\defcodeindex{\defcodeindex1279,41927 +\def\synindex #1 #2 {\synindex1283,42107 +\def\syncodeindex #1 #2 {\syncodeindex1292,42447 +\def\doindex#1{\doindex1309,43126 +\def\singleindexer #1{\singleindexer1310,43185 +\def\docodeindex#1{\docodeindex1313,43297 +\def\singlecodeindexer #1{\singlecodeindexer1314,43364 +\def\indexdummies{\indexdummies1316,43422 +\def\_{\_1317,43442 +\def\w{\w1318,43470 +\def\bf{\bf1319,43497 +\def\rm{\rm1320,43526 +\def\sl{\sl1321,43555 +\def\sf{\sf1322,43584 +\def\tt{\tt1323,43612 +\def\gtr{\gtr1324,43640 +\def\less{\less1325,43670 +\def\hat{\hat1326,43702 +\def\char{\char1327,43732 +\def\TeX{\TeX1328,43764 +\def\dots{\dots1329,43794 +\def\copyright{\copyright1330,43827 +\def\tclose##1{\tclose1331,43870 +\def\code##1{\code1332,43915 +\def\samp##1{\samp1333,43956 +\def\t##1{\t1334,43997 +\def\r##1{\r1335,44032 +\def\i##1{\i1336,44067 +\def\b##1{\b1337,44102 +\def\cite##1{\cite1338,44137 +\def\key##1{\key1339,44178 +\def\file##1{\file1340,44217 +\def\var##1{\var1341,44258 +\def\kbd##1{\kbd1342,44297 +\def\indexdummyfont#1{\indexdummyfont1347,44453 +\def\indexdummytex{\indexdummytex1348,44479 +\def\indexdummydots{\indexdummydots1349,44503 +\def\indexnofonts{\indexnofonts1351,44529 +\let\w=\indexdummyfontdummyfont1352,44549 +\let\t=\indexdummyfontdummyfont1353,44572 +\let\r=\indexdummyfontdummyfont1354,44595 +\let\i=\indexdummyfontdummyfont1355,44618 +\let\b=\indexdummyfontdummyfont1356,44641 +\let\emph=\indexdummyfontdummyfont1357,44664 +\let\strong=\indexdummyfontdummyfont1358,44690 +\let\cite=\indexdummyfont=\indexdummyfont1359,44718 +\let\sc=\indexdummyfontdummyfont1360,44744 +\let\tclose=\indexdummyfontdummyfont1364,44916 +\let\code=\indexdummyfontdummyfont1365,44944 +\let\file=\indexdummyfontdummyfont1366,44970 +\let\samp=\indexdummyfontdummyfont1367,44996 +\let\kbd=\indexdummyfontdummyfont1368,45022 +\let\key=\indexdummyfontdummyfont1369,45047 +\let\var=\indexdummyfontdummyfont1370,45072 +\let\TeX=\indexdummytexdummytex1371,45097 +\let\dots=\indexdummydotsdummydots1372,45121 +\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45373 +\def\doind #1#2{\doind1384,45429 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45472 +\def\rawbackslashxx{\rawbackslashxx1389,45612 +{\indexnofontsnofonts1394,45874 +\def\dosubind #1#2#3{\dosubind1405,46185 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46233 +\def\rawbackslashxx{\rawbackslashxx1410,46337 +{\indexnofontsnofonts1414,46491 +\def\findex {\findex1443,47422 +\def\kindex {\kindex1444,47445 +\def\cindex {\cindex1445,47468 +\def\vindex {\vindex1446,47491 +\def\tindex {\tindex1447,47514 +\def\pindex {\pindex1448,47537 +\def\cindexsub {\cindexsub1450,47561 +\def\printindex{\printindex1462,47888 +\def\doprintindex#1{\doprintindex1464,47929 + \def\indexbackslash{\indexbackslash1481,48414 + \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48453 +\def\initial #1{\initial1517,49525 +\def\entry #1#2{\entry1523,49732 + \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50379 +\def\indexdotfill{\indexdotfill1549,50707 +\def\primary #1{\primary1552,50813 +\def\secondary #1#2{\secondary1556,50895 +\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50977 +\newbox\partialpageialpage1566,51150 +\def\begindoublecolumns{\begindoublecolumns1572,51308 + \output={\global\setbox\partialpage=ialpage=1573,51344 +\def\enddoublecolumns{\enddoublecolumns1577,51532 +\def\doublecolumnout{\doublecolumnout1580,51617 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51686 +\def\pagesofar{\pagesofar1584,51864 +\def\balancecolumns{\balancecolumns1588,52101 + \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52272 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52533 +\newcount \appendixno \appendixno = `\@no1627,53438 +\def\appendixletter{\appendixletter1628,53479 +\def\opencontents{\opencontents1632,53582 +\def\thischapter{\thischapter1637,53763 +\def\seccheck#1{\seccheck1638,53801 +\def\chapternofonts{\chapternofonts1643,53905 +\def\result{\result1646,53980 +\def\equiv{\equiv1647,54015 +\def\expansion{\expansion1648,54048 +\def\print{\print1649,54089 +\def\TeX{\TeX1650,54122 +\def\dots{\dots1651,54151 +\def\copyright{\copyright1652,54182 +\def\tt{\tt1653,54223 +\def\bf{\bf1654,54250 +\def\w{\w1655,54278 +\def\less{\less1656,54303 +\def\gtr{\gtr1657,54334 +\def\hat{\hat1658,54363 +\def\char{\char1659,54392 +\def\tclose##1{\tclose1660,54423 +\def\code##1{\code1661,54467 +\def\samp##1{\samp1662,54507 +\def\r##1{\r1663,54547 +\def\b##1{\b1664,54581 +\def\key##1{\key1665,54615 +\def\file##1{\file1666,54653 +\def\kbd##1{\kbd1667,54693 +\def\i##1{\i1669,54801 +\def\cite##1{\cite1670,54835 +\def\var##1{\var1671,54875 +\def\emph##1{\emph1672,54913 +\def\dfn##1{\dfn1673,54953 +\def\thischaptername{\thischaptername1676,54994 +\outer\def\chapter{\chapter1677,55033 +\def\chapterzzz #1{\chapterzzz1678,55074 +{\chapternofonts%nofonts%1687,55470 +\global\let\section = \numberedsec=1692,55623 +\global\let\subsection = \numberedsubsec=1693,55658 +\global\let\subsubsection = \numberedsubsubsec=1694,55699 +\outer\def\appendix{\appendix1697,55750 +\def\appendixzzz #1{\appendixzzz1698,55793 +\global\advance \appendixno by 1 \message{no1700,55870 +\chapmacro {#1}{Appendix \appendixletter}letter1701,55939 +\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56032 +{\chapternofonts%nofonts%1705,56104 + {#1}{Appendix \appendixletter}letter1707,56160 +\appendixnoderef %noderef1710,56260 +\global\let\section = \appendixsec=1711,56279 +\global\let\subsection = \appendixsubsec=1712,56314 +\global\let\subsubsection = \appendixsubsubsec=1713,56355 +\outer\def\top{\top1716,56406 +\outer\def\unnumbered{\unnumbered1717,56446 +\def\unnumberedzzz #1{\unnumberedzzz1718,56493 +{\chapternofonts%nofonts%1722,56656 +\global\let\section = \unnumberedsec=1727,56806 +\global\let\subsection = \unnumberedsubsec=1728,56843 +\global\let\subsubsection = \unnumberedsubsubsec=1729,56886 +\outer\def\numberedsec{\numberedsec1732,56939 +\def\seczzz #1{\seczzz1733,56980 +{\chapternofonts%nofonts%1736,57136 +\outer\def\appendixsection{\appendixsection1745,57322 +\outer\def\appendixsec{\appendixsec1746,57379 +\def\appendixsectionzzz #1{\appendixsectionzzz1747,57432 +\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57544 +{\chapternofonts%nofonts%1750,57612 +{#1}{\appendixletter}letter1752,57668 +\appendixnoderef %noderef1755,57768 +\outer\def\unnumberedsec{\unnumberedsec1759,57808 +\def\unnumberedseczzz #1{\unnumberedseczzz1760,57861 +{\chapternofonts%nofonts%1762,57956 +\outer\def\numberedsubsec{\numberedsubsec1770,58124 +\def\numberedsubseczzz #1{\numberedsubseczzz1771,58179 +{\chapternofonts%nofonts%1774,58358 +\outer\def\appendixsubsec{\appendixsubsec1783,58562 +\def\appendixsubseczzz #1{\appendixsubseczzz1784,58617 +\subsecheading {#1}{\appendixletter}letter1786,58739 +{\chapternofonts%nofonts%1787,58804 +{#1}{\appendixletter}letter1789,58863 +\appendixnoderef %noderef1792,58978 +\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59018 +\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59077 +{\chapternofonts%nofonts%1799,59178 +\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59349 +\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59410 +{\chapternofonts%nofonts%1812,59607 +\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59840 +\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59901 + {\appendixletter}letter1827,60040 +{\chapternofonts%nofonts%1828,60106 + {\appendixletter}letter1830,60171 +\appendixnoderef %noderef1834,60305 +\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60345 +\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60410 +{\chapternofonts%nofonts%1841,60517 +\def\infotop{\infotop1851,60846 +\def\infounnumbered{\infounnumbered1852,60884 +\def\infounnumberedsec{\infounnumberedsec1853,60929 +\def\infounnumberedsubsec{\infounnumberedsubsec1854,60980 +\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61037 +\def\infoappendix{\infoappendix1857,61101 +\def\infoappendixsec{\infoappendixsec1858,61142 +\def\infoappendixsubsec{\infoappendixsubsec1859,61189 +\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61242 +\def\infochapter{\infochapter1862,61302 +\def\infosection{\infosection1863,61341 +\def\infosubsection{\infosubsection1864,61380 +\def\infosubsubsection{\infosubsubsection1865,61425 +\global\let\section = \numberedsec=1870,61662 +\global\let\subsection = \numberedsubsec=1871,61697 +\global\let\subsubsection = \numberedsubsubsec=1872,61738 +\def\majorheading{\majorheading1886,62245 +\def\majorheadingzzz #1{\majorheadingzzz1887,62290 +\def\chapheading{\chapheading1893,62523 +\def\chapheadingzzz #1{\chapheadingzzz1894,62566 +\def\heading{\heading1899,62761 +\def\subheading{\subheading1901,62798 +\def\subsubheading{\subsubheading1903,62841 +\def\dobreak#1#2{\dobreak1910,63118 +\def\setchapterstyle #1 {\setchapterstyle1912,63196 +\def\chapbreak{\chapbreak1919,63451 +\def\chappager{\chappager1920,63501 +\def\chapoddpage{\chapoddpage1921,63539 +\def\setchapternewpage #1 {\setchapternewpage1923,63618 +\def\CHAPPAGoff{\CHAPPAGoff1925,63675 +\def\CHAPPAGon{\CHAPPAGon1929,63769 +\global\def\HEADINGSon{\HEADINGSon1932,63860 +\def\CHAPPAGodd{\CHAPPAGodd1934,63902 +\global\def\HEADINGSon{\HEADINGSon1937,63998 +\def\CHAPFplain{\CHAPFplain1941,64052 +\def\chfplain #1#2{\chfplain1945,64144 +\def\unnchfplain #1{\unnchfplain1956,64367 +\def\unnchfopen #1{\unnchfopen1964,64596 +\def\chfopen #1#2{\chfopen1970,64804 +\def\CHAPFopen{\CHAPFopen1975,64948 +\def\subsecheadingbreak{\subsecheadingbreak1982,65166 +\def\secheadingbreak{\secheadingbreak1985,65295 +\def\secheading #1#2#3{\secheading1993,65577 +\def\plainsecheading #1{\plainsecheading1994,65633 +\def\secheadingi #1{\secheadingi1995,65676 +\def\subsecheading #1#2#3#4{\subsecheading2006,66044 +\def\subsecheadingi #1{\subsecheadingi2007,66111 +\def\subsubsecfonts{\subsubsecfonts2014,66408 +\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66531 +\def\subsubsecheadingi #1{\subsubsecheadingi2018,66609 +\def\startcontents#1{\startcontents2032,67081 + \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67354 +\outer\def\contents{\contents2049,67713 +\outer\def\summarycontents{\summarycontents2057,67857 + \def\secentry ##1##2##3##4{\secentry2067,68228 + \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68263 + \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68298 + \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68339 + \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68377 + \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68424 +\def\chapentry#1#2#3{\chapentry2085,68858 +\def\shortchapentry#1#2#3{\shortchapentry2088,68975 + {#2\labelspace #1}space2091,69085 +\def\unnumbchapentry#1#2{\unnumbchapentry2094,69139 +\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69186 +\def\secentry#1#2#3#4{\secentry2102,69350 +\def\unnumbsecentry#1#2{\unnumbsecentry2103,69409 +\def\subsecentry#1#2#3#4#5{\subsecentry2106,69470 +\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69540 +\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69614 + \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69648 +\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69699 +\def\dochapentry#1#2{\dochapentry2123,70073 +\def\dosecentry#1#2{\dosecentry2138,70678 +\def\dosubsecentry#1#2{\dosubsecentry2145,70856 +\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71041 +\def\labelspace{\labelspace2160,71292 +\def\dopageno#1{\dopageno2162,71327 +\def\doshortpageno#1{\doshortpageno2163,71353 +\def\chapentryfonts{\chapentryfonts2165,71385 +\def\secentryfonts{\secentryfonts2166,71420 +\def\point{\point2192,72379 +\def\result{\result2194,72400 +\def\expansion{\expansion2195,72473 +\def\print{\print2196,72544 +\def\equiv{\equiv2198,72611 +\def\error{\error2218,73384 +\def\tex{\tex2224,73613 +\def\@{\@2242,73996 +\gdef\sepspaces{\def {\ }}}\2265,74728 +\def\aboveenvbreak{\aboveenvbreak2268,74810 +\def\afterenvbreak{\afterenvbreak2272,74976 +\def\ctl{\ctl2286,75487 +\def\ctr{\ctr2287,75559 +\def\cbl{\cbl2288,75598 +\def\cbr{\cbr2289,75638 +\def\carttop{\carttop2290,75677 +\def\cartbot{\cartbot2293,75785 +\long\def\cartouche{\cartouche2299,75925 +\def\Ecartouche{\Ecartouche2326,76713 +\def\lisp{\lisp2338,76848 +\def\Elisp{\Elisp2348,77195 +\def\next##1{\next2360,77521 +\def\Eexample{\Eexample2364,77563 +\def\Esmallexample{\Esmallexample2367,77610 +\def\smalllispx{\smalllispx2373,77788 +\def\Esmalllisp{\Esmalllisp2383,78142 +\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78498 +\def\next##1{\next2397,78555 +\def\display{\display2401,78635 +\def\Edisplay{\Edisplay2410,78954 +\def\next##1{\next2422,79265 +\def\format{\format2426,79368 +\def\Eformat{\Eformat2434,79664 +\def\next##1{\next2437,79753 +\def\flushleft{\flushleft2441,79805 +\def\Eflushleft{\Eflushleft2451,80176 +\def\next##1{\next2454,80269 +\def\flushright{\flushright2456,80291 +\def\Eflushright{\Eflushright2466,80663 +\def\next##1{\next2470,80794 +\def\quotation{\quotation2474,80852 +\def\Equotation{\Equotation2480,81044 +\def\setdeffont #1 {\setdeffont2493,81442 +\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81488 +\newskip\defargsindent \defargsindent=50ptargsindent2496,81531 +\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81574 +\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81617 +\def\activeparens{\activeparens2503,81815 +\def\opnr{\opnr2529,83027 +\def\lbrb{\lbrb2530,83092 +\def\defname #1#2{\defname2536,83293 +\advance\dimen2 by -\defbodyindentbodyindent2540,83411 +\advance\dimen3 by -\defbodyindentbodyindent2542,83465 +\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83519 +\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83661 +\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83736 +\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84105 +\advance\leftskip by -\defbodyindentbodyindent2557,84239 +\exdentamount=\defbodyindentbodyindent2558,84276 +\def\defparsebody #1#2#3{\defparsebody2568,84635 +\def#1{2572,84819 +\def#2{2573,84855 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84927 +\exdentamount=\defbodyindentbodyindent2576,85001 +\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85105 +\def#1{2585,85266 +\def#2##1 {2586,85302 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85385 +\exdentamount=\defbodyindentbodyindent2589,85459 +\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85544 +\def#1{2596,85705 +\def#2##1 ##2 {2597,85741 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85841 +\exdentamount=\defbodyindentbodyindent2601,85915 +\def\defvarparsebody #1#2#3{\defvarparsebody2608,86186 +\def#1{2612,86373 +\def#2{2613,86409 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86468 +\exdentamount=\defbodyindentbodyindent2616,86542 +\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86633 +\def#1{2625,86792 +\def#2##1 {2626,86828 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86898 +\exdentamount=\defbodyindentbodyindent2629,86972 +\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87044 +\def#1{2636,87208 +\def#2##1 ##2 {2637,87244 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87331 +\exdentamount=\defbodyindentbodyindent2641,87405 +\def\defunargs #1{\defunargs2664,88165 +\def\deftypefunargs #1{\deftypefunargs2676,88547 +\def\deffn{\deffn2690,88929 +\def\deffnheader #1#2#3{\deffnheader2692,88986 +\begingroup\defname {name2693,89034 +\def\defun{\defun2699,89179 +\def\defunheader #1#2{\defunheader2701,89232 +\begingroup\defname {name2702,89307 +\defunargs {unargs2703,89343 +\def\deftypefun{\deftypefun2709,89491 +\def\deftypefunheader #1#2{\deftypefunheader2712,89613 +\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89722 +\begingroup\defname {name2716,89814 +\deftypefunargs {typefunargs2717,89860 +\def\deftypefn{\deftypefn2723,90031 +\def\deftypefnheader #1#2#3{\deftypefnheader2726,90180 +\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90316 +\begingroup\defname {name2730,90409 +\deftypefunargs {typefunargs2731,90449 +\def\defmac{\defmac2737,90570 +\def\defmacheader #1#2{\defmacheader2739,90627 +\begingroup\defname {name2740,90703 +\defunargs {unargs2741,90736 +\def\defspec{\defspec2747,90860 +\def\defspecheader #1#2{\defspecheader2749,90921 +\begingroup\defname {name2750,90998 +\defunargs {unargs2751,91038 +\def\deffnx #1 {\deffnx2758,91233 +\def\defunx #1 {\defunx2759,91290 +\def\defmacx #1 {\defmacx2760,91347 +\def\defspecx #1 {\defspecx2761,91406 +\def\deftypefnx #1 {\deftypefnx2762,91467 +\def\deftypeunx #1 {\deftypeunx2763,91532 +\def\defop #1 {\defop2769,91678 +\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91713 +\def\defopheader #1#2#3{\defopheader2772,91767 +\begingroup\defname {name2774,91856 +\defunargs {unargs2775,91902 +\def\defmethod{\defmethod2780,91963 +\def\defmethodheader #1#2#3{\defmethodheader2782,92036 +\begingroup\defname {name2784,92124 +\defunargs {unargs2785,92164 +\def\defcv #1 {\defcv2790,92238 +\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92273 +\def\defcvarheader #1#2#3{\defcvarheader2793,92332 +\begingroup\defname {name2795,92418 +\defvarargs {varargs2796,92464 +\def\defivar{\defivar2801,92537 +\def\defivarheader #1#2#3{\defivarheader2803,92600 +\begingroup\defname {name2805,92686 +\defvarargs {varargs2806,92737 +\def\defopx #1 {\defopx2812,92886 +\def\defmethodx #1 {\defmethodx2813,92943 +\def\defcvx #1 {\defcvx2814,93008 +\def\defivarx #1 {\defivarx2815,93065 +\def\defvarargs #1{\defvarargs2822,93336 +\def\defvr{\defvr2828,93480 +\def\defvrheader #1#2#3{\defvrheader2830,93535 +\begingroup\defname {name2831,93583 +\def\defvar{\defvar2835,93668 +\def\defvarheader #1#2{\defvarheader2837,93728 +\begingroup\defname {name2838,93799 +\defvarargs {varargs2839,93835 +\def\defopt{\defopt2844,93901 +\def\defoptheader #1#2{\defoptheader2846,93961 +\begingroup\defname {name2847,94032 +\defvarargs {varargs2848,94071 +\def\deftypevar{\deftypevar2853,94128 +\def\deftypevarheader #1#2{\deftypevarheader2856,94244 +\begingroup\defname {name2858,94327 +\def\deftypevr{\deftypevr2865,94501 +\def\deftypevrheader #1#2#3{\deftypevrheader2867,94572 +\begingroup\defname {name2868,94624 +\def\defvrx #1 {\defvrx2876,94861 +\def\defvarx #1 {\defvarx2877,94918 +\def\defoptx #1 {\defoptx2878,94977 +\def\deftypevarx #1 {\deftypevarx2879,95036 +\def\deftypevrx #1 {\deftypevrx2880,95103 +\def\deftpargs #1{\deftpargs2885,95252 +\def\deftp{\deftp2889,95332 +\def\deftpheader #1#2#3{\deftpheader2891,95387 +\begingroup\defname {name2892,95435 +\def\deftpx #1 {\deftpx2897,95594 +\def\setref#1{\setref2908,95915 +\def\unnumbsetref#1{\unnumbsetref2913,96029 +\def\appendixsetref#1{\appendixsetref2918,96136 +\def\pxref#1{\pxref2929,96547 +\def\xref#1{\xref2930,96583 +\def\ref#1{\ref2931,96618 +\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96648 +\def\printedmanual{\printedmanual2933,96691 +\def\printednodename{\printednodename2934,96729 +\def\printednodename{\printednodename2939,96854 +section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97487 +\refx{x2957,97565 +\def\dosetq #1#2{\dosetq2965,97785 +\def\internalsetq #1#2{\internalsetq2973,98043 +\def\Ypagenumber{\Ypagenumber2977,98144 +\def\Ytitle{\Ytitle2979,98170 +\def\Ynothing{\Ynothing2981,98197 +\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98214 +\def\Yappendixletterandtype{\Yappendixletterandtype2992,98530 +\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98560 +\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98615 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98719 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98790 + \def\linenumber{\linenumber3009,99129 +\def\refx#1#2{\refx3015,99313 +\def\xrdef #1#2{\xrdef3037,99939 +\def\readauxfile{\readauxfile3040,100024 +\def\supereject{\supereject3110,101805 +\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102490 +\def\openindices{\openindices3139,102676 +\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102901 +\parindent = \defaultparindentaultparindent3152,102953 +\def\smallbook{\smallbook3175,103677 +\global\def\Esmallexample{\Esmallexample3192,104104 +\def\afourpaper{\afourpaper3196,104195 +\def\finalout{\finalout3224,105003 +\def\normaldoublequote{\normaldoublequote3235,105264 +\def\normaltilde{\normaltilde3236,105290 +\def\normalcaret{\normalcaret3237,105310 +\def\normalunderscore{\normalunderscore3238,105330 +\def\normalverticalbar{\normalverticalbar3239,105355 +\def\normalless{\normalless3240,105381 +\def\normalgreater{\normalgreater3241,105400 +\def\normalplus{\normalplus3242,105422 +\def\ifusingtt#1#2{\ifusingtt3253,105914 +\def\activedoublequote{\activedoublequote3261,106242 +\def~{~3264,106328 +\def^{^3267,106389 +\def_{_3270,106428 +\def\_{\_3272,106502 +\def\lvvmode{\lvvmode3279,106839 +\def|{|3282,106889 +\def<{<3285,106952 +\def>{>3288,107009 +\def+{+3290,107047 +\def\turnoffactive{\turnoffactive3296,107208 +\global\def={=3307,107494 +\def\normalbackslash{\normalbackslash3321,107876 + +c-src/c.c,76 +T f(1,0 +}T i;2,14 +void bar(5,69 +int foobar(6,94 +interface_locate(9,131 + +c.c,1836 +void (*fa)fa131, +void 132, +my_printf 135, +void fatala 138, +void fatalb 139, +max 141, +struct bar 143, +__attribute__ ((always_inline)) max 147, +extern int old_var 149, +struct foo150, +char stack[stack155, +struct S 156, +} wait_status_ptr_t 161, +Some_Class A 162, +typedef T1 T3 163, +T3 z 164, +typedef int more_aligned_int 165, +struct S __attribute__ ((vector_size (16))) foo;166, +int foo 167, +char *__attribute__((aligned(8))) *f;f168, +int i 169, +extern void foobar 170, +typedef struct cacheLRUEntry_s172, +__attribute__ ((packed)) cacheLRUEntry_t;177, +struct foo 178, + f1 183, +void f2 184, +__attribute__((noreturn)) void d0 185, + __attribute__((format(printf, 1, 2))) d1 186, + d2 187, +int x 188, +struct foo 189, +short array[array190, +int f193, +DEAFUN 196, +XDEFUN 203, +DEFUN ("x-get-selection-internal", Fx_get_selection_internal,x-get-selection-internal206, + Fx_get_selection_internal,x-get-selection-internal212, + Fy_get_selection_internal,y-get-selection-internal216, +defun_func1(218, +DEFUN_func2(220, +typedef int bool;222, +bool funcboo 223, +struct my_struct 226, +typedef struct my_struct my_typedef;228, +int bla 229, +a(234, +int func1237, +static struct cca_control init_control 239, +static tpcmd rbtp 240, +static byte ring1 241, +static byte ring2 242, +request request 243, +int func2 246, + aaa;249, + bbb;251, +struct sss1 252, +struct sss2253, + struct ss3255, +struct a b;259, +struct aa *b;b260, + **b;b262, +caccacacca 263, +a 267, + typedef struct aa 269, + typedef struct aa {} aaa;269, +static void inita 271, +node *lasta lasta272, +b 273, + typedef int bb;275, +static void initb 277, +node *lastb lastb278, +typedef enum { REG_ENOSYS 279, +typedef enum { REG_ENOSYS = -1, aa 279, +typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;279, + +c-src/a/b/b.c,18 +#define this 1,0 + +../c/c.web,20 +#define questo 34, + +y-src/parse.y,1061 +#define obstack_chunk_alloc 46,1116 +#define obstack_chunk_free 47,1154 +int yylex 57,1322 +void yyerror 59,1352 +void yyerror 61,1381 +VOIDSTAR parse_hash;63,1405 +extern VOIDSTAR hash_find(64,1426 +unsigned char fnin[fnin67,1524 +#define YYSTYPE 71,1622 +typedef struct node *YYSTYPE;YYSTYPE72,1653 +YYSTYPE parse_return;73,1683 +YYSTYPE make_list 75,1721 +YYSTYPE make_list 77,1765 +char *instr;instr80,1795 +int parse_error 81,1808 +extern struct obstack tmp_mem;82,1829 +line:line86,1867 +exp:exp94,1980 +exp_list:exp_list262,5647 +range_exp:range_exp268,5745 +range_exp_list:range_exp_list272,5775 +cell:cell278,5893 +yyerror FUN1(285,5940 +make_list FUN2(292,6020 +#define ERROR 303,6220 +extern struct node *yylval;yylval305,6238 +unsigned char parse_cell_or_range 308,6283 +unsigned char parse_cell_or_range 310,6347 +yylex FUN0(314,6397 +parse_cell_or_range FUN2(586,11763 +#define CK_ABS_R(670,13205 +#define CK_REL_R(674,13284 +#define CK_ABS_C(679,13413 +#define CK_REL_C(683,13492 +#define MAYBEREL(688,13621 +str_to_col FUN1(846,16822 + +y-src/parse.c,520 +#define YYBISON 4,64 +# define NE 6,114 +# define LE 7,130 +# define GE 8,146 +# define NEG 9,162 +# define L_CELL 10,179 +# define L_RANGE 11,199 +# define L_VAR 12,220 +# define L_CONST 13,239 +# define L_FN0 14,260 +# define L_FN1 15,279 +# define L_FN2 16,298 +# define L_FN3 17,317 +# define L_FN4 18,336 +# define L_FNN 19,355 +# define L_FN1R 20,374 +# define L_FN2R 21,394 +# define L_FN3R 22,414 +# define L_FN4R 23,434 +# define L_FNNR 24,454 +# define L_LE 25,474 +# define L_NE 26,492 +# define L_GE 27,510 + +parse.y,1464 +#define obstack_chunk_alloc 46, +#define obstack_chunk_free 47, +int yylex 57, +void yyerror 59, +void yyerror 61, +VOIDSTAR parse_hash;63, +extern VOIDSTAR hash_find(64, +unsigned char fnin[fnin67, +#define YYSTYPE 71, +typedef struct node *YYSTYPE;YYSTYPE72, +YYSTYPE parse_return;73, +YYSTYPE make_list 75, +YYSTYPE make_list 77, +char *instr;instr80, +int parse_error 81, +extern struct obstack tmp_mem;82, +#define YYSTYPE 85, +# define YYDEBUG 88, +#define YYFINAL 93, +#define YYFLAG 94, +#define YYNTBASE 95, +#define YYTRANSLATE(98, +static const char yytranslate[yytranslate101, +static const short yyprhs[yyprhs134, +static const short yyrhs[yyrhs142, +static const short yyrline[yyrline171, +static const char *const yytname[yytname185, +static const short yyr1[yyr1197, +static const short yyr2[yyr2207, +static const short yydefact[yydefact219, +static const short yydefgoto[yydefgoto237, +static const short yypact[yypact242, +static const short yypgoto[yypgoto260, +#define YYLAST 266, +static const short yytable[yytable269, +static const short yycheck[yycheck330, +yyerror FUN1(285, +make_list FUN2(292, +#define ERROR 303, +extern struct node *yylval;yylval305, +unsigned char parse_cell_or_range 308, +unsigned char parse_cell_or_range 310, +yylex FUN0(314, +parse_cell_or_range FUN2(586, +#define CK_ABS_R(670, +#define CK_REL_R(674, +#define CK_ABS_C(679, +#define CK_REL_C(683, +#define MAYBEREL(688, +str_to_col FUN1(846, + +/usr/share/bison/bison.simple,2180 +# define YYSTD(40, +# define YYSTD(42, +# define YYSTACK_ALLOC 50, +# define YYSIZE_T 51, +# define YYSTACK_ALLOC 55, +# define YYSIZE_T 56, +# define YYSTACK_ALLOC 59, +# define YYSTACK_FREE(67, +# define YYSIZE_T 71, +# define YYSIZE_T 75, +# define YYSTACK_ALLOC 78, +# define YYSTACK_FREE 79, +union yyalloc83, +# define YYSTACK_GAP_MAX 93, +# define YYSTACK_BYTES(98, +# define YYSTACK_BYTES(102, +# define YYSTACK_RELOCATE(112, +# define YYSIZE_T 128, +# define YYSIZE_T 131, +# define YYSIZE_T 136, +# define YYSIZE_T 140, +# define YYSIZE_T 145, +#define yyerrok 148, +#define yyclearin 149, +#define YYEMPTY 150, +#define YYEOF 151, +#define YYACCEPT 152, +#define YYABORT 153, +#define YYERROR 154, +#define YYFAIL 158, +#define YYRECOVERING(159, +#define YYBACKUP(160, +#define YYTERROR 177, +#define YYERRCODE 178, +# define YYLLOC_DEFAULT(189, +# define YYLEX 200, +# define YYLEX 202, +# define YYLEX 206, +# define YYLEX 208, +# define YYLEX 212, +# define YYFPRINTF 225, +# define YYDPRINTF(228, +int yydebug;237, +# define YYDPRINTF(239, +# define YYINITDEPTH 244, +# undef YYMAXDEPTH255, +# define YYMAXDEPTH 259, +# define yymemcpy 264, +yymemcpy 271, +# define yystrlen 293, +yystrlen 298, +# define yystpcpy 316, +yystpcpy 322, +# define YYPARSE_PARAM_ARG 351, +# define YYPARSE_PARAM_DECL352, +# define YYPARSE_PARAM_ARG 354, +# define YYPARSE_PARAM_DECL 355, +# define YYPARSE_PARAM_ARG358, +# define YYPARSE_PARAM_DECL359, +int yyparse 365, +int yyparse 367, +#define YY_DECL_NON_LSP_VARIABLES 374, +# define YY_DECL_VARIABLES 385, +# define YY_DECL_VARIABLES 391, +yyparse 403, +# define YYPOPSTACK 445, +# define YYPOPSTACK 447, +# undef YYSTACK_RELOCATE548, + *++yyvsp yyvsp746, + *++yylsp yylsp748, + yyn 755, + yystate 757, + yystate 761, + goto yynewstate;763, + goto yyerrlab1;823, + yyerrstatus 846, + goto yyerrhandle;848, + yyn 861, + yystate 875, + yyn 895, + yyn 903, + YYDPRINTF 917, + *++yyvsp yyvsp919, + *++yylsp yylsp921, + yystate 924, + goto yynewstate;925, + yyresult 932, + goto yyreturn;933, + yyresult 939, + goto yyreturn;940, + yyerror 946, + yyresult 947, + +y-src/atest.y,9 +exp 2,3 + +y-src/cccp.c,303 +#define YYBISON 4,63 +# define INT 6,113 +# define CHAR 7,130 +# define NAME 8,148 +# define ERROR 9,166 +# define OR 10,185 +# define AND 11,201 +# define EQUAL 12,218 +# define NOTEQUAL 13,237 +# define LEQ 14,259 +# define GEQ 15,276 +# define LSH 16,293 +# define RSH 17,310 +# define UNARY 18,327 + +cccp.y,2005 +typedef unsigned char U_CHAR;38, +struct arglist 41, +#define NULL 51, +#define GENERIC_PTR 56, +#define GENERIC_PTR 58, +#define NULL_PTR 63, +int yylex 66, +void yyerror 67, +int expression_value;68, +static jmp_buf parse_return_error;70, +static int keyword_parsing 73, +extern unsigned char is_idstart[is_idstart76, +extern unsigned char is_idstart[], is_idchar[is_idchar76, +extern unsigned char is_idstart[], is_idchar[], is_hor_space[is_hor_space76, +extern char *xmalloc xmalloc78, +extern int pedantic;81, +extern int traditional;84, +#define CHAR_TYPE_SIZE 87, +#define INT_TYPE_SIZE 91, +#define LONG_TYPE_SIZE 95, +#define WCHAR_TYPE_SIZE 99, +#define possible_sum_sign(104, +static void integer_overflow 106, +static long left_shift 107, +static long right_shift 108, + struct constant 113, + struct name 114, +} yystype;118, +# define YYSTYPE 119, +# define YYDEBUG 122, +#define YYFINAL 127, +#define YYFLAG 128, +#define YYNTBASE 129, +#define YYTRANSLATE(132, +static const char yytranslate[yytranslate135, +static const short yyprhs[yyprhs167, +static const short yyrhs[yyrhs174, +static const short yyrline[yyrline195, +static const char *const yytname[yytname208, +static const short yyr1[yyr1219, +static const short yyr2[yyr2228, +static const short yydefact[yydefact239, +static const short yydefgoto[yydefgoto251, +static const short yypact[yypact256, +static const short yypgoto[yypgoto268, +#define YYLAST 274, +static const short yytable[yytable277, +static const short yycheck[yycheck301, +static char *lexptr;lexptr332, +parse_number 341, +struct token 437, +static struct token tokentab2[tokentab2442, +yylex 459, +parse_escape 740, +yyerror 836, +integer_overflow 844, +left_shift 851, +right_shift 873, +parse_c_expression 893, +extern int yydebug;919, +main 923, +unsigned char is_idchar[is_idchar948, +unsigned char is_idstart[is_idstart950, +char is_hor_space[is_hor_space953, +initialize_random_junk 958, +error 988, +warning 993, +lookup 999, + +/usr/share/bison/bison.simple,2180 +# define YYSTD(41, +# define YYSTD(43, +# define YYSTACK_ALLOC 51, +# define YYSIZE_T 52, +# define YYSTACK_ALLOC 56, +# define YYSIZE_T 57, +# define YYSTACK_ALLOC 60, +# define YYSTACK_FREE(68, +# define YYSIZE_T 72, +# define YYSIZE_T 76, +# define YYSTACK_ALLOC 79, +# define YYSTACK_FREE 80, +union yyalloc84, +# define YYSTACK_GAP_MAX 94, +# define YYSTACK_BYTES(99, +# define YYSTACK_BYTES(103, +# define YYSTACK_RELOCATE(113, +# define YYSIZE_T 129, +# define YYSIZE_T 132, +# define YYSIZE_T 137, +# define YYSIZE_T 141, +# define YYSIZE_T 146, +#define yyerrok 149, +#define yyclearin 150, +#define YYEMPTY 151, +#define YYEOF 152, +#define YYACCEPT 153, +#define YYABORT 154, +#define YYERROR 155, +#define YYFAIL 159, +#define YYRECOVERING(160, +#define YYBACKUP(161, +#define YYTERROR 178, +#define YYERRCODE 179, +# define YYLLOC_DEFAULT(190, +# define YYLEX 201, +# define YYLEX 203, +# define YYLEX 207, +# define YYLEX 209, +# define YYLEX 213, +# define YYFPRINTF 226, +# define YYDPRINTF(229, +int yydebug;238, +# define YYDPRINTF(240, +# define YYINITDEPTH 245, +# undef YYMAXDEPTH256, +# define YYMAXDEPTH 260, +# define yymemcpy 265, +yymemcpy 272, +# define yystrlen 294, +yystrlen 299, +# define yystpcpy 317, +yystpcpy 323, +# define YYPARSE_PARAM_ARG 351, +# define YYPARSE_PARAM_DECL352, +# define YYPARSE_PARAM_ARG 354, +# define YYPARSE_PARAM_DECL 355, +# define YYPARSE_PARAM_ARG358, +# define YYPARSE_PARAM_DECL359, +int yyparse 365, +int yyparse 367, +#define YY_DECL_NON_LSP_VARIABLES 374, +# define YY_DECL_VARIABLES 385, +# define YY_DECL_VARIABLES 391, +yyparse 403, +# define YYPOPSTACK 445, +# define YYPOPSTACK 447, +# undef YYSTACK_RELOCATE548, + *++yyvsp yyvsp746, + *++yylsp yylsp748, + yyn 755, + yystate 757, + yystate 761, + goto yynewstate;763, + goto yyerrlab1;823, + yyerrstatus 846, + goto yyerrhandle;848, + yyn 861, + yystate 875, + yyn 895, + yyn 903, + YYDPRINTF 917, + *++yyvsp yyvsp919, + *++yylsp yylsp921, + yystate 924, + goto yynewstate;925, + yyresult 932, + goto yyreturn;933, + yyresult 939, + goto yyreturn;940, + yyerror 946, + yyresult 947, + +y-src/cccp.y,1582 +typedef unsigned char U_CHAR;38,1201 +struct arglist 41,1301 +#define NULL 51,1468 +#define GENERIC_PTR 56,1578 +#define GENERIC_PTR 58,1611 +#define NULL_PTR 63,1670 +int yylex 66,1712 +void yyerror 67,1726 +int expression_value;68,1743 +static jmp_buf parse_return_error;70,1766 +static int keyword_parsing 73,1865 +extern unsigned char is_idstart[is_idstart76,1944 +extern unsigned char is_idstart[], is_idchar[is_idchar76,1944 +extern unsigned char is_idstart[], is_idchar[], is_hor_space[is_hor_space76,1944 +extern char *xmalloc xmalloc78,2009 +extern int pedantic;81,2062 +extern int traditional;84,2114 +#define CHAR_TYPE_SIZE 87,2162 +#define INT_TYPE_SIZE 91,2229 +#define LONG_TYPE_SIZE 95,2296 +#define WCHAR_TYPE_SIZE 99,2365 +#define possible_sum_sign(104,2556 +static void integer_overflow 106,2632 +static long left_shift 107,2665 +static long right_shift 108,2692 + struct constant 112,2733 + struct name 113,2789 +start 143,3226 +exp1 148,3330 +exp 156,3505 +exp 185,4295 +keywords 306,7835 +static char *lexptr;lexptr332,8579 +parse_number 341,8842 +struct token 437,11038 +static struct token tokentab2[tokentab2442,11088 +yylex 459,11367 +parse_escape 740,17718 +yyerror 836,19599 +integer_overflow 844,19690 +left_shift 851,19804 +right_shift 873,20194 +parse_c_expression 893,20732 +extern int yydebug;919,21416 +main 923,21483 +unsigned char is_idchar[is_idchar948,21901 +unsigned char is_idstart[is_idstart950,21996 +char is_hor_space[is_hor_space953,22160 +initialize_random_junk 958,22259 +error 988,22915 +warning 993,22963 +lookup 999,23033 + +tex-src/nonewline.tex,0 + +php-src/sendmail.php,0 + +a-src/empty.zz,0 diff --cc test/manual/etags/ETAGS.good_3 index 1f5a34272e3,00000000000..5f84aa9a0c6 mode 100644,000000..100644 --- a/test/manual/etags/ETAGS.good_3 +++ b/test/manual/etags/ETAGS.good_3 @@@ -1,4709 -1,0 +1,4709 @@@ + +ada-src/etags-test-for.ada,1969 + type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0 + function Body_RequiredBody_Required/f3,78 + type Type_Specific_Data Type_Specific_Data/t11,280 + function "abs"abs/f19,504 + type Barrier_Function_Pointer Barrier_Function_Pointer/t21,577 + function "="=/f27,722 + type usfreelock_ptr usfreelock_ptr/t30,803 + function p p/f33,891 + procedure LL_Wrapper LL_Wrapper/p37,1054 +function p p/f39,1094 +package Pkg1 Pkg1/s44,1203 + type Private_T Private_T/t46,1220 + package Inner1 Inner1/s48,1250 + procedure Private_T;Private_T/p49,1270 + package Inner2 Inner2/s52,1310 + task Private_T;Private_T/k53,1330 + type Public_T Public_T/t56,1365 + procedure Pkg1_Proc1;Pkg1_Proc1/p62,1450 + procedure Pkg1_Proc2 Pkg1_Proc2/p64,1475 + function Pkg1_Func1 Pkg1_Func1/f66,1514 + function Pkg1_Func2 Pkg1_Func2/f68,1553 + package Pkg1_Pkg1 Pkg1_Pkg1/s71,1622 + procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p72,1645 + task type Task_Type Task_Type/k75,1694 + type Private_T Private_T/t82,1786 +package body Pkg1 Pkg1/b89,1882 + procedure Pkg1_Proc1 Pkg1_Proc1/p91,1904 + package body Inner1 Inner1/b96,1956 + procedure Private_T Private_T/p97,1981 + package body Inner2 Inner2/b103,2054 + task body Private_T Private_T/b104,2079 + task body Task_Type Task_Type/b112,2181 + procedure Pkg1_Proc2 Pkg1_Proc2/p126,2367 + function Pkg1_Func1 Pkg1_Func1/f132,2445 + function Pkg1_Func2 Pkg1_Func2/f134,2496 + package body Pkg1_Pkg1 Pkg1_Pkg1/b140,2596 +package body Pkg1_Pkg1 Pkg1_Pkg1/b146,2663 + procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p147,2689 +function Pkg1_Func1 Pkg1_Func1/f155,2778 +package Truc Truc/s162,2887 +package Truc.Bidule Truc.Bidule/s166,2929 + protected Bidule Bidule/t168,2953 + protected type Machin_T Machin_T/t172,3007 +package body Truc.Bidule Truc.Bidule/b178,3087 + protected body Bidule Bidule/b179,3115 + protected Machin_T Machin_T/t186,3207 + +ada-src/2ataspri.adb,2190 +package body System.Task_Primitives System.Task_Primitives/b64,2603 + package RTE RTE/s69,2712 + package TSL TSL/s70,2759 + function To_void_ptr To_void_ptr/f86,3287 + function To_TCB_Ptr To_TCB_Ptr/f89,3366 + function pthread_mutexattr_setprotocolpthread_mutexattr_setprotocol/f92,3444 + function pthread_mutexattr_setprio_ceilingpthread_mutexattr_setprio_ceiling/f99,3728 + procedure Abort_WrapperAbort_Wrapper/p115,4302 + procedure LL_Wrapper LL_Wrapper/p122,4526 + procedure Initialize_LL_Tasks Initialize_LL_Tasks/p131,4830 + function Self Self/f160,5586 + procedure Initialize_LockInitialize_Lock/p174,5958 + procedure Finalize_Lock Finalize_Lock/p210,6927 + procedure Write_Lock Write_Lock/p226,7338 + procedure Read_Lock Read_Lock/p239,7700 + procedure Unlock Unlock/p246,7850 + procedure Initialize_Cond Initialize_Cond/p258,8160 + procedure Finalize_Cond Finalize_Cond/p286,8979 + procedure Cond_Wait Cond_Wait/p300,9303 + procedure Cond_Timed_WaitCond_Timed_Wait/p312,9661 + procedure Cond_Signal Cond_Signal/p343,10510 + procedure Set_PrioritySet_Priority/p355,10836 + procedure Set_Own_Priority Set_Own_Priority/p372,11243 + function Get_Priority Get_Priority/f385,11598 + function Get_Own_Priority Get_Own_Priority/f398,12023 + procedure Create_LL_TaskCreate_LL_Task/p412,12438 + function To_Start_Addr To_Start_Addr/f426,12873 + procedure Exit_LL_Task Exit_LL_Task/p491,14995 + procedure Abort_Task Abort_Task/p500,15158 + procedure Test_Abort Test_Abort/p518,15716 + procedure Install_Abort_Handler Install_Abort_Handler/p527,15878 + procedure Abort_WrapperAbort_Wrapper/p557,16939 + function Address_To_Call_State Address_To_Call_State/f562,17062 + procedure Install_Error_Handler Install_Error_Handler/p573,17351 + procedure LL_Assert LL_Assert/p599,18146 + procedure LL_Wrapper LL_Wrapper/p608,18299 + procedure Initialize_TAS_Cell Initialize_TAS_Cell/p630,19010 + procedure Finalize_TAS_Cell Finalize_TAS_Cell/p635,19129 + procedure Clear Clear/p640,19236 + procedure Test_And_Set Test_And_Set/p645,19330 + function Is_Set Is_Set/f659,19676 + +ada-src/2ataspri.ads,2313 +package System.Task_Primitives System.Task_Primitives/s58,3169 + type LL_Task_Procedure_Access LL_Task_Procedure_Access/t62,3253 + type Pre_Call_State Pre_Call_State/t64,3331 + type Task_Storage_Size Task_Storage_Size/t66,3378 + type Machine_Exceptions Machine_Exceptions/t68,3433 + type Error_Information Error_Information/t70,3499 + type Lock Lock/t72,3569 + type Condition_Variable Condition_Variable/t73,3594 + type Task_Control_Block Task_Control_Block/t81,3955 + type TCB_Ptr TCB_Ptr/t89,4241 + function Address_To_TCB_Ptr Address_To_TCB_Ptr/f93,4333 + procedure Initialize_LL_Tasks Initialize_LL_Tasks/p96,4425 + function Self Self/f100,4602 + procedure Initialize_Lock Initialize_Lock/p103,4707 + procedure Finalize_Lock Finalize_Lock/p107,4879 + procedure Write_Lock Write_Lock/p111,5034 + procedure Read_Lock Read_Lock/p118,5428 + procedure Unlock Unlock/p128,5995 + procedure Initialize_Cond Initialize_Cond/p135,6300 + procedure Finalize_Cond Finalize_Cond/p138,6413 + procedure Cond_Wait Cond_Wait/p142,6591 + procedure Cond_Timed_WaitCond_Timed_Wait/p155,7396 + procedure Cond_Signal Cond_Signal/p164,7812 + procedure Set_Priority Set_Priority/p169,8040 + procedure Set_Own_Priority Set_Own_Priority/p173,8200 + function Get_Priority Get_Priority/f177,8348 + function Get_Own_Priority Get_Own_Priority/f181,8504 + procedure Create_LL_TaskCreate_LL_Task/p185,8647 + procedure Exit_LL_Task;Exit_LL_Task/p198,9282 + procedure Abort_Task Abort_Task/p203,9516 + procedure Test_Abort;Test_Abort/p210,9878 + type Abort_Handler_Pointer Abort_Handler_Pointer/t217,10233 + procedure Install_Abort_Handler Install_Abort_Handler/p219,10312 + procedure Install_Error_Handler Install_Error_Handler/p226,10741 + procedure LL_Assert LL_Assert/p231,10983 + type Proc Proc/t238,11240 + type TAS_Cell TAS_Cell/t242,11328 + procedure Initialize_TAS_Cell Initialize_TAS_Cell/p249,11670 + procedure Finalize_TAS_Cell Finalize_TAS_Cell/p255,11941 + procedure Clear Clear/p260,12157 + procedure Test_And_Set Test_And_Set/p267,12462 + function Is_Set Is_Set/f275,12877 + type Lock Lock/t283,13155 + type Condition_Variable Condition_Variable/t288,13267 + type TAS_Cell TAS_Cell/t293,13389 + +ada-src/waroquiers.ada,1503 +package Pkg1 Pkg1/s3,89 + type Private_T Private_T/t5,106 + package Inner1 Inner1/s7,136 + procedure Private_T;Private_T/p8,156 + package Inner2 Inner2/s11,196 + task Private_T;Private_T/k12,216 + type Public_T Public_T/t15,251 + procedure Pkg1_Proc1;Pkg1_Proc1/p21,336 + procedure Pkg1_Proc2 Pkg1_Proc2/p23,361 + function Pkg1_Func1 Pkg1_Func1/f25,400 + function Pkg1_Func2 Pkg1_Func2/f27,439 + package Pkg1_Pkg1 Pkg1_Pkg1/s30,508 + procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p31,531 + task type Task_Type Task_Type/k34,580 + type Private_T Private_T/t40,671 +package body Pkg1 Pkg1/b46,766 + procedure Pkg1_Proc1 Pkg1_Proc1/p48,788 + package body Inner1 Inner1/b53,840 + procedure Private_T Private_T/p54,865 + package body Inner2 Inner2/b60,938 + task body Private_T Private_T/b61,963 + task body Task_Type Task_Type/b68,1064 + procedure Pkg1_Proc2 Pkg1_Proc2/p82,1250 + function Pkg1_Func1 Pkg1_Func1/f88,1328 + function Pkg1_Func2 Pkg1_Func2/f90,1379 + package body Pkg1_Pkg1 Pkg1_Pkg1/b96,1479 +package body Pkg1_Pkg1 Pkg1_Pkg1/b100,1544 + procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p101,1570 +function Pkg1_Func1 Pkg1_Func1/f107,1657 +package Truc Truc/s112,1764 +package Truc.Bidule Truc.Bidule/s116,1816 + protected Bidule Bidule/t125,1964 + protected type Machin_T Machin_T/t131,2046 +package body Truc.Bidule Truc.Bidule/b138,2153 + protected body Bidule Bidule/b139,2181 + protected body Machin_T Machin_T/b146,2281 + +c-src/abbrev.c,1432 +Lisp_Object Vabbrev_table_name_list;43,1424 +Lisp_Object Vglobal_abbrev_table;48,1569 +Lisp_Object Vfundamental_mode_abbrev_table;52,1680 +int abbrevs_changed;56,1781 +int abbrev_all_caps;58,1803 +Lisp_Object Vabbrev_start_location;63,1952 +Lisp_Object Vabbrev_start_location_buffer;66,2041 +Lisp_Object Vlast_abbrev;70,2150 +Lisp_Object Vlast_abbrev_text;75,2319 +int last_abbrev_point;79,2409 +Lisp_Object Vpre_abbrev_expand_hook,83,2482 +Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2482 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2546 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2738 +DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3119 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev149,4438 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4809 +DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5277 +DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6241 +DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6756 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11677 +write_abbrev 426,12884 +describe_abbrev 445,13319 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description466,13834 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table506,14990 +syms_of_abbrev 540,16067 + +c-src/torture.c,197 +(*tag1 tag118,452 +#define notag2 26,553 +(*tag2 tag229,630 +(*tag3 tag339,772 +#define notag4 45,861 +(*tag4 tag448,955 +tag5 57,1081 +tag6 66,1208 +int pp1(74,1317 +pp287,1419 +pp3(100,1518 + +c-src/getopt.h,275 +#define _GETOPT_H 19,794 +struct option73,2790 + const char *name;name76,2819 + char *name;name78,2845 + int has_arg;82,3002 + int *flag;flag83,3017 + int val;84,3030 +#define no_argument 89,3117 +#define required_argument 90,3140 +#define optional_argument 91,3168 + +c-src/etags.c,12045 +char pot_etags_version[pot_etags_version81,3470 +# undef DEBUG84,3552 +# define DEBUG 85,3567 +# define DEBUG 87,3594 +# define NDEBUG 88,3617 +# define _GNU_SOURCE 94,3705 +# undef MSDOS100,3876 +# undef WINDOWSNT101,3890 +# define WINDOWSNT102,3909 +# undef MSDOS106,3968 +# define MSDOS 107,3982 +# define MSDOS 110,4032 +# define MAXPATHLEN 115,4111 +# undef HAVE_NTGUI116,4141 +# undef DOS_NT117,4160 +# define DOS_NT118,4176 +# undef assert 135,4482 +# define assert(136,4541 +# undef CTAGS146,4857 +# define CTAGS 147,4872 +# define CTAGS 149,4898 +#define streq(152,4927 +#define strcaseeq(153,4996 +#define strneq(154,5075 +#define strncaseeq(155,5151 +#define CHARS 157,5238 +#define CHAR(158,5278 +#define iswhite(159,5329 +#define notinname(160,5394 +#define begtoken(161,5469 +#define intoken(162,5542 +#define endtoken(163,5614 +#define ISALNUM(165,5684 +#define ISALPHA(166,5722 +#define ISDIGIT(167,5760 +#define ISLOWER(168,5798 +#define lowcase(170,5837 +#define xnew(179,6015 +#define xrnew(180,6083 +typedef void Lang_function 182,6164 + const char *suffix;suffix186,6219 + const char *command;command187,6294 +} compressor;188,6365 + const char *name;name192,6397 + const char *help;help193,6449 + Lang_function *function;function194,6508 + const char **suffixes;suffixes195,6556 + const char **filenames;filenames196,6633 + const char **interpreters;interpreters197,6702 + bool metasource;198,6771 +} language;199,6835 +typedef struct fdesc201,6848 + struct fdesc *next;next203,6871 + char *infname;infname204,6920 + char *infabsname;infabsname205,6973 + char *infabsdir;infabsdir206,7038 + char *taggedfname;taggedfname207,7091 + language *lang;lang208,7149 + char *prop;prop209,7191 + bool usecharno;210,7249 + bool written;211,7311 +} fdesc;212,7366 +typedef struct node_st214,7376 + struct node_st *left,left216,7428 + struct node_st *left, *right;right216,7428 + fdesc *fdp;fdp217,7486 + char *name;name218,7548 + char *regex;regex219,7580 + bool valid;220,7617 + bool is_func;221,7670 + bool been_warned;222,7733 + int lno;223,7801 + long cno;224,7842 +} node;225,7894 + long size;236,8208 + int len;237,8221 + char *buffer;buffer238,8232 +} linebuffer;239,8248 + at_language,245,8344 + at_regexp,246,8393 + at_filename,247,8437 + at_stdin,248,8473 + at_end 249,8516 + } arg_type;250,8557 + language *lang;lang251,8593 + char *what;what252,8656 +} argument;253,8698 +typedef struct regexp256,8758 + struct regexp *p_next;p_next258,8782 + language *lang;lang259,8837 + char *pattern;pattern260,8897 + char *name;name261,8940 + struct re_pattern_buffer *pat;pat262,8971 + struct re_registers regs;263,9031 + bool error_signaled;264,9078 + bool force_explicit_name;265,9141 + bool ignore_case;266,9206 + bool multi_line;267,9259 +} regexp;268,9325 +static void error 311,10780 +# undef STDIN408,15073 +#define STDIN 411,15095 +static compressor compressors[compressors457,17664 +static const char *Ada_suffixes Ada_suffixes473,17907 +static const char Ada_help 475,17977 +static const char *Asm_suffixes Asm_suffixes493,18580 +static const char Asm_help 504,18976 +static const char *default_C_suffixes default_C_suffixes512,19312 +static const char default_C_help 515,19413 +static const char default_C_help 523,19850 +static const char *Cplusplus_suffixes Cplusplus_suffixes535,20460 +static const char Cplusplus_help 540,20658 +static const char *Cjava_suffixes Cjava_suffixes549,21113 +static char Cjava_help 551,21172 +static const char *Cobol_suffixes Cobol_suffixes556,21337 +static char Cobol_help 558,21402 +static const char *Cstar_suffixes Cstar_suffixes562,21543 +static const char *Erlang_suffixes Erlang_suffixes565,21607 +static const char Erlang_help 567,21673 +const char *Forth_suffixes Forth_suffixes571,21799 +static const char Forth_help 573,21857 +static const char *Fortran_suffixes Fortran_suffixes577,22008 +static const char Fortran_help 579,22085 +static const char *HTML_suffixes HTML_suffixes582,22190 +static const char HTML_help 584,22264 +static const char *Lisp_suffixes Lisp_suffixes589,22452 +static const char Lisp_help 591,22556 +static const char *Lua_suffixes Lua_suffixes598,22871 +static const char Lua_help 600,22934 +static const char *Makefile_filenames Makefile_filenames603,23010 +static const char Makefile_help 605,23133 +static const char *Objc_suffixes Objc_suffixes609,23277 +static const char Objc_help 613,23399 +static const char *Pascal_suffixes Pascal_suffixes619,23714 +static const char Pascal_help 621,23778 +static const char *Perl_suffixes Perl_suffixes626,23966 +static const char *Perl_interpreters Perl_interpreters628,24028 +static const char Perl_help 630,24100 +static const char *PHP_suffixes PHP_suffixes637,24451 +static const char PHP_help 639,24523 +static const char *plain_C_suffixes plain_C_suffixes643,24678 +static const char *PS_suffixes PS_suffixes647,24762 +static const char PS_help 649,24848 +static const char *Prolog_suffixes Prolog_suffixes652,24931 +static const char Prolog_help 654,24993 +static const char *Python_suffixes Python_suffixes658,25107 +static const char Python_help 660,25165 +static const char *Scheme_suffixes Scheme_suffixes665,25347 +static const char Scheme_help 667,25460 +static const char *TeX_suffixes TeX_suffixes672,25683 +static const char TeX_help 674,25781 +static const char *Texinfo_suffixes Texinfo_suffixes686,26316 +static const char Texinfo_help 688,26395 +static const char *Yacc_suffixes Yacc_suffixes691,26492 +static const char Yacc_help 693,26606 +static const char auto_help 699,26856 +static const char none_help 703,27020 +static const char no_lang_help 707,27143 +static language lang_names 718,27355 +print_language_names 753,29532 +# define EMACS_NAME 786,30755 +# define VERSION 789,30811 +print_version 792,30869 +# define PRINT_UNDOCUMENTED_OPTIONS_HELP 804,31173 +print_help 808,31250 +main 981,37438 +get_compressor_from_suffix 1319,46217 +get_language_from_langname 1355,47158 +get_language_from_interpreter 1377,47545 +get_language_from_filename 1399,47976 +process_file_name 1433,48834 +process_file 1555,51665 +init 1632,54150 +find_entries 1656,54901 +make_tag 1814,59707 +pfnote 1856,60942 +free_tree 1917,62744 +free_fdesc 1935,63029 +add_node 1955,63472 +invalidate_nodes 2035,65537 +static int number_len 2068,66193 +total_size_of_entries 2087,66694 +put_entries 2107,67154 +#define C_EXT 2193,68995 +#define C_PLAIN 2194,69037 +#define C_PLPL 2195,69070 +#define C_STAR 2196,69104 +#define C_JAVA 2197,69137 +#define C_AUTO 2198,69172 +#define YACC 2199,69242 +enum sym_type2204,69312 + st_none,2206,69328 + st_C_objprot,2207,69339 + st_C_objprot, st_C_objimpl,2207,69339 + st_C_objprot, st_C_objimpl, st_C_objend,2207,69339 + st_C_gnumacro,2208,69382 + st_C_ignore,2209,69399 + st_C_ignore, st_C_attribute,2209,69399 + st_C_javastruct,2210,69430 + st_C_operator,2211,69449 + st_C_class,2212,69466 + st_C_class, st_C_template,2212,69466 + st_C_struct,2213,69495 + st_C_struct, st_C_extern,2213,69495 + st_C_struct, st_C_extern, st_C_enum,2213,69495 + st_C_struct, st_C_extern, st_C_enum, st_C_define,2213,69495 + st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef2213,69495 +struct C_stab_entry 2271,71278 +struct C_stab_entry { const char *name;name2271,71278 +struct C_stab_entry { const char *name; int c_ext;2271,71278 +struct C_stab_entry { const char *name; int c_ext; enum sym_type type;2271,71278 +hash 2275,71409 +in_word_set 2321,72937 + TOTAL_KEYWORDS 2325,73018 + MIN_WORD_LENGTH 2326,73045 + MAX_WORD_LENGTH 2327,73072 + MIN_HASH_VALUE 2328,73100 + MAX_HASH_VALUE 2329,73126 +C_symtype 2387,74985 +static bool inattribute;2400,75234 + fvnone,2408,75435 + fdefunkey,2409,75466 + fdefunname,2410,75512 + foperator,2411,75556 + fvnameseen,2412,75613 + fstartlist,2413,75666 + finlist,2414,75722 + flistseen,2415,75765 + fignore,2416,75813 + vignore 2417,75856 +} fvdef;2418,75901 +static bool fvextern;2420,75911 + tnone,2428,76089 + tkeyseen,2429,76119 + ttypeseen,2430,76160 + tinbody,2431,76199 + tend,2432,76238 + tignore 2433,76279 +} typdef;2434,76320 + snone,2443,76499 + skeyseen,2445,76575 + stagseen,2446,76620 + scolonseen 2447,76661 +} structdef;2448,76715 +static const char *objtag objtag2453,76809 + dnone,2460,76942 + dsharpseen,2461,76972 + ddefineseen,2462,77025 + dignorerest 2463,77070 +} definedef;2464,77112 + onone,2472,77267 + oprotocol,2473,77297 + oimplementation,2474,77347 + otagseen,2475,77395 + oparenseen,2476,77431 + ocatseen,2477,77486 + oinbody,2478,77525 + omethodsign,2479,77568 + omethodtag,2480,77626 + omethodcolon,2481,77666 + omethodparm,2482,77709 + oignore 2483,77755 +} objdef;2484,77787 +static struct tok2491,77944 + char *line;line2493,77964 + int offset;2494,78014 + int length;2495,78067 + bool valid;2502,78352 + bool named;2505,78487 + int lineno;2506,78528 + long linepos;2507,78576 +} token;2508,78626 + char **cname;cname2519,78950 + int *bracelev;bracelev2520,78993 + int nl;2521,79042 + int size;2522,79096 +} cstack;2523,79136 +#define nestlev 2525,79264 +#define instruct 2527,79369 +pushclass_above 2531,79489 +popclass_above 2550,79948 +write_classname 2564,80162 +consider_token 2613,81341 + long linepos;2922,88499 + linebuffer lb;2923,88515 +} lbs[lbs2924,88532 +#define current_lb_is_new 2926,88543 +#define switch_line_buffers(2927,88588 +#define curlb 2929,88641 +#define newlb 2930,88672 +#define curlinepos 2931,88703 +#define newlinepos 2932,88744 +#define plainc 2934,88786 +#define cplpl 2935,88830 +#define cjava 2936,88861 +#define CNL_SAVE_DEFINEDEF(2938,88905 +#define CNL(2947,89117 +make_C_tag 2960,89375 +C_entries 2986,90194 +default_C_entries 3833,110156 +plain_C_entries 3840,110276 +Cplusplus_entries 3847,110364 +Cjava_entries 3854,110460 +Cstar_entries 3861,110550 +Yacc_entries 3868,110642 +#define LOOP_ON_INPUT_LINES(3875,110720 +#define LOOKING_AT(3884,111056 +#define LOOKING_AT_NOCASE(3891,111461 +just_read_file 3901,111861 +F_takeprec 3914,112039 +F_getit 3937,112366 +Fortran_functions 3961,112840 +Ada_getit 4052,114669 +Ada_funcs 4115,116044 +Asm_labels 4228,118582 +Perl_functions 4261,119549 +Python_functions 4357,122057 +PHP_functions 4387,122684 +Cobol_paragraphs 4466,124471 +Makefile_targets 4494,125029 +Pascal_functions 4529,125950 +L_getit 4709,130318 +Lisp_functions 4725,130664 +Lua_functions 4785,131850 +PS_functions 4811,132385 +Forth_words 4841,133053 +Scheme_functions 4877,134092 +static linebuffer *TEX_toktab TEX_toktab4908,134781 +static const char *TEX_defenv TEX_defenv4912,134974 +static char TEX_esc 4920,135261 +static char TEX_opgrp 4921,135289 +static char TEX_clgrp 4922,135318 +TeX_commands 4928,135395 +#define TEX_LESC 4986,136652 +#define TEX_SESC 4987,136674 +TEX_mode 4992,136804 +TEX_decode_env 5026,137509 +Texinfo_nodes 5071,138554 +HTML_labels 5094,139013 +Prolog_functions 5219,142347 +prolog_skip_comment 5255,143128 +prolog_pr 5281,143736 +prolog_atom 5319,144628 +Erlang_functions 5379,145666 +erlang_func 5438,146965 +erlang_attribute 5476,147642 +erlang_atom 5496,148061 +scan_separators 5534,149080 +analyze_regex 5586,150460 +add_regex 5654,152050 +substitute 5767,154797 +free_regexps 5814,155837 +regex_tag_multiline 5836,156291 +nocase_tail 5913,158263 +get_tag 5928,158519 +readline_internal 5959,159455 +readline 6037,161296 +savestr 6230,167243 +savenstr 6240,167473 +skip_spaces 6249,167679 +skip_non_spaces 6258,167833 +skip_name 6267,167983 +fatal 6277,168156 +pfatal 6284,168253 +suggest_asking_for_help 6291,168332 +error 6300,168554 +concat 6313,168846 +etags_getcwd 6329,169259 +relative_filename 6350,169725 +absolute_filename 6389,170751 +absolute_dirname 6453,172416 +filename_is_absolute 6472,172845 +canonicalize_filename 6484,173096 +# define ISUPPER(6491,173235 +linebuffer_init 6514,173656 +linebuffer_setlen 6524,173887 +xmalloc 6536,174148 +xrealloc 6545,174314 + +c-src/exit.c,99 + size_t n;28,967 + void EXFUN((*fn[fn29,981 + } __libc_atexit;30,1017 +DEFUN(exit,38,1258 + +c-src/exit.strange_suffix,99 + size_t n;28,967 + void EXFUN((*fn[fn29,981 + } __libc_atexit;30,1017 +DEFUN(exit,38,1258 + +c-src/sysdep.h,491 +#define ENTRY(21,870 +#define PSEUDO(26,977 + movl $SYS_##syscall_nam$SYS_##syscall_na31,1137 + movl $SYS_##syscall_name, %eax;eax31,1137 + int $0x80;32,1185 + test %eax,eax33,1215 + test %eax, %eax;eax33,1215 + jl syscall_error;34,1250 +#define XCHG_0 47,1567 +#define XCHG_1 48,1611 +#define XCHG_2 49,1653 +#define XCHG_3 50,1696 +#define XCHG_4 51,1739 +#define XCHG_5 52,1782 +#define r0 54,1826 +#define r1 55,1880 +#define scratch 56,1937 +#define MOVE(57,2006 + +c-src/tab.c,196 +static int count_words(15,263 +static char *get_word(get_word35,553 +void tab_free(59,966 +char **tab_fill(tab_fill70,1129 +int tab_delete_first(91,1638 +int tab_count_words(103,1820 + +c-src/dostorture.c,198 +(*tag1 tag118,468 +#define notag2 26,577 +(*tag2 tag229,657 +(*tag3 tag339,809 +#define notag4 45,904 +(*tag4 tag448,1001 +tag5 57,1136 +tag6 66,1272 +int pp1(74,1389 +pp287,1504 +pp3(100,1616 + +c-src/emacs/src/gmalloc.c,4207 +#define USE_PTHREAD25,1002 +#undef get_current_dir_name33,1126 +#undef malloc64,2110 +#undef realloc65,2124 +#undef calloc66,2139 +#undef free67,2153 +#define malloc 68,2165 +#define realloc 69,2188 +#define calloc 70,2213 +#define aligned_alloc 71,2236 +#define free 72,2273 +#define DUMPED 80,2472 +#define ALLOCATED_BEFORE_DUMPING(81,2507 +extern void *malloc malloc94,2718 +#define INT_BIT 124,3934 +#define BLOCKLOG 125,3977 +#define BLOCKSIZE 126,4018 +#define BLOCKIFY(127,4052 +#define HEAP 131,4215 +#define FINAL_FREE_BLOCKS 135,4391 + int type;145,4676 + size_t nfree;150,4720 + size_t first;151,4777 + } frag;152,4834 + ptrdiff_t size;156,5055 + } info;157,5076 + } busy;158,5087 + size_t size;163,5215 + size_t next;164,5272 + size_t prev;165,5321 + } free;166,5374 + } malloc_info;167,5388 +#define BLOCK(176,5620 +#define ADDRESS(177,5682 +struct list186,5939 + struct list *next;next188,5955 + struct list *prev;prev189,5978 +struct alignlist196,6153 + struct alignlist *next;next198,6174 + void *aligned;aligned199,6202 + void *exact;exact200,6270 +#define LOCK(223,7064 +#define UNLOCK(228,7195 +#define LOCK_ALIGNED_BLOCKS(233,7329 +#define UNLOCK_ALIGNED_BLOCKS(238,7484 +#define LOCK(244,7649 +#define UNLOCK(245,7664 +#define LOCK_ALIGNED_BLOCKS(246,7681 +#define UNLOCK_ALIGNED_BLOCKS(247,7711 +enum mcheck_status283,9092 + MCHECK_DISABLED 285,9115 + MCHECK_OK,286,9187 + MCHECK_FREE,287,9226 + MCHECK_HEAD,288,9270 + MCHECK_TAIL 289,9334 +struct mstats308,10153 + size_t bytes_total;310,10171 + size_t chunks_used;311,10225 + size_t bytes_used;312,10285 + size_t chunks_free;313,10351 + size_t bytes_free;314,10406 +char *_heapbase;_heapbase355,11829 +malloc_info *_heapinfo;_heapinfo358,11927 +static size_t heapsize;361,11983 +size_t _heapindex;364,12047 +size_t _heaplimit;367,12109 +struct list _fraghead[_fraghead370,12171 +size_t _chunks_used;373,12229 +size_t _bytes_used;374,12250 +size_t _chunks_free;375,12270 +size_t _bytes_free;376,12291 +int __malloc_initialized;379,12340 +size_t __malloc_extra_blocks;381,12367 +static int state_protected_p;400,12912 +static size_t last_state_size;401,12942 +static malloc_info *last_heapinfo;last_heapinfo402,12973 +protect_malloc_state 405,13014 +#define PROTECT_MALLOC_STATE(426,13627 +#define PROTECT_MALLOC_STATE(429,13697 +align 435,13794 +get_contiguous_space 466,14616 +register_heapinfo 497,15325 +pthread_mutex_t _malloc_mutex 517,15879 +pthread_mutex_t _aligned_blocks_mutex 518,15938 +int _malloc_thread_enabled_p;519,16005 +malloc_atfork_handler_prepare 522,16048 +malloc_atfork_handler_parent 529,16139 +malloc_atfork_handler_child 536,16233 +malloc_enable_thread 544,16375 +malloc_initialize_1 563,16961 +__malloc_initialize 594,17793 +static int morecore_recursing;604,17926 +morecore_nolock 609,18066 +_malloc_internal_nolock 722,21584 +_malloc_internal 920,28102 +malloc 932,28247 +_malloc 961,29140 +_free 967,29196 +_realloc 973,29240 +struct alignlist *_aligned_blocks _aligned_blocks1004,30345 +_free_internal_nolock 1009,30474 +_free_internal 1255,38476 +free 1265,38603 +weak_alias 1277,38799 +#define min(1306,39813 +_realloc_internal_nolock 1319,40309 +_realloc_internal 1435,43563 +realloc 1447,43726 +calloc 1478,44894 +#define __sbrk 1513,46042 +__default_morecore 1525,46511 +aligned_alloc 1557,47522 +memalign 1647,49704 +posix_memalign 1656,49909 +static size_t pagesize;1703,51317 +valloc 1706,51349 +#undef malloc1715,51490 +#undef realloc1716,51504 +#undef calloc1717,51519 +#undef aligned_alloc1718,51533 +#undef free1719,51554 +hybrid_malloc 1736,52083 +hybrid_calloc 1744,52188 +hybrid_free 1752,52319 +hybrid_aligned_alloc 1765,52626 +hybrid_realloc 1780,52984 +hybrid_get_current_dir_name 1811,53797 +#define MAGICWORD 1854,55206 +#define MAGICFREE 1855,55261 +#define MAGICBYTE 1856,55316 +#define MALLOCFLOOD 1857,55348 +#define FREEFLOOD 1858,55382 +struct hdr1860,55415 + size_t size;1862,55430 + size_t magic;1863,55484 +checkhdr 1867,55581 +freehook 1891,56022 +mallochook 1927,56804 +reallochook 1944,57143 +mabort 1978,57901 +static int mcheck_used 2012,58586 +mcheck 2015,58619 +mprobe 2035,59138 + +c-src/emacs/src/regex.h,4485 +#define _REGEX_H 21,836 +typedef unsigned long reg_syntax_t;43,1577 +#define RE_BACKSLASH_ESCAPE_IN_LISTS 47,1749 +#define RE_BK_PLUS_QM 52,1969 +#define RE_CHAR_CLASSES 58,2298 +#define RE_CONTEXT_INDEP_ANCHORS 72,3032 +#define RE_CONTEXT_INDEP_OPS 80,3458 +#define RE_CONTEXT_INVALID_OPS 84,3658 +#define RE_DOT_NEWLINE 88,3801 +#define RE_DOT_NOT_NULL 92,3937 +#define RE_HAT_LISTS_NOT_NEWLINE 96,4082 +#define RE_INTERVALS 101,4292 +#define RE_LIMITED_OPS 105,4441 +#define RE_NEWLINE_ALT 109,4583 +#define RE_NO_BK_BRACES 114,4773 +#define RE_NO_BK_PARENS 118,4964 +#define RE_NO_BK_REFS 122,5120 +#define RE_NO_BK_VBAR 126,5316 +#define RE_NO_EMPTY_RANGES 132,5610 +#define RE_UNMATCHED_RIGHT_PAREN_ORD 136,5766 +#define RE_NO_POSIX_BACKTRACKING 140,5937 +#define RE_NO_GNU_OPS 144,6133 +#define RE_FRUGAL 147,6253 +#define RE_SHY_GROUPS 150,6360 +#define RE_NO_NEWLINE_ANCHOR 153,6468 +#define RE_DEBUG 161,6884 +#define RE_SYNTAX_EMACS 183,7684 +#define RE_SYNTAX_AWK 186,7780 +#define RE_SYNTAX_GNU_AWK 193,8084 +#define RE_SYNTAX_POSIX_AWK 197,8255 +#define RE_SYNTAX_GREP 201,8393 +#define RE_SYNTAX_EGREP 206,8549 +#define RE_SYNTAX_POSIX_EGREP 212,8765 +#define RE_SYNTAX_ED 216,8910 +#define RE_SYNTAX_SED 218,8954 +#define _RE_SYNTAX_POSIX_COMMON 221,9072 +#define RE_SYNTAX_POSIX_BASIC 225,9215 +#define RE_SYNTAX_POSIX_MINIMAL_BASIC 231,9508 +#define RE_SYNTAX_POSIX_EXTENDED 234,9598 +#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED 242,9967 +# undef RE_DUP_MAX253,10454 +#define RE_DUP_MAX 256,10540 +#define REG_EXTENDED 263,10762 +#define REG_ICASE 267,10886 +#define REG_NEWLINE 272,11070 +#define REG_NOSUB 276,11248 +#define REG_NOTBOL 286,11614 +#define REG_NOTEOL 289,11688 + REG_ENOSYS 297,11859 + REG_NOERROR 300,11941 + REG_NOMATCH,301,11976 + REG_BADPAT,305,12123 + REG_ECOLLATE,306,12162 + REG_ECTYPE,307,12203 + REG_EESCAPE,308,12255 + REG_ESUBREG,309,12298 + REG_EBRACK,310,12345 + REG_EPAREN,311,12391 + REG_EBRACE,312,12436 + REG_BADBR,313,12472 + REG_ERANGE,314,12519 + REG_ESPACE,315,12560 + REG_BADRPT,316,12601 + REG_EEND,319,12693 + REG_ESIZE,320,12728 + REG_ERPAREN,321,12790 + REG_ERANGEX 322,12859 +} reg_errcode_t;323,12911 +# define RE_TRANSLATE_TYPE 332,13273 +struct re_pattern_buffer335,13315 + unsigned char *buffer;buffer341,13538 + size_t allocated;344,13614 + size_t used;347,13686 + reg_syntax_t syntax;350,13769 + char *fastmap;fastmap355,13975 + RE_TRANSLATE_TYPE translate;361,14241 + size_t re_nsub;364,14329 + unsigned can_be_null 370,14624 +#define REGS_UNALLOCATED 376,14889 +#define REGS_REALLOCATE 377,14916 +#define REGS_FIXED 378,14942 + unsigned regs_allocated 379,14963 + unsigned fastmap_accurate 383,15136 + unsigned no_sub 387,15267 + unsigned not_bol 391,15398 + unsigned not_eol 394,15475 + unsigned used_syntax 398,15655 + unsigned multibyte 403,15805 + unsigned target_multibyte 407,15941 + int charset_unibyte;410,16032 +typedef struct re_pattern_buffer regex_t;416,16098 +typedef ssize_t regoff_t;423,16492 +struct re_registers428,16652 + unsigned num_regs;430,16674 + regoff_t *start;start431,16695 + regoff_t *end;end432,16714 +# define RE_NREGS 440,16942 + regoff_t rm_so;449,17159 + regoff_t rm_eo;450,17239 +} regmatch_t;451,17317 +# define _Restrict_ 540,20886 +# define _Restrict_ 542,20979 +# define _Restrict_544,21018 +# define _Restrict_arr_ 555,21418 +# define _Restrict_arr_557,21461 +# define CHAR_CLASS_MAX_LENGTH 593,22470 +# define CHAR_CLASS_MAX_LENGTH 597,22648 +typedef wctype_t re_wctype_t;599,22692 +typedef wchar_t re_wchar_t;600,22722 +# define re_wctype 601,22750 +# define re_iswctype 602,22776 +# define re_wctype_to_bit(603,22806 +# define CHAR_CLASS_MAX_LENGTH 605,22844 +# define btowc(606,22906 +typedef enum { RECC_ERROR 609,22953 + RECC_ALNUM,610,22984 + RECC_ALNUM, RECC_ALPHA,610,22984 + RECC_ALNUM, RECC_ALPHA, RECC_WORD,610,22984 + RECC_GRAPH,611,23027 + RECC_GRAPH, RECC_PRINT,611,23027 + RECC_LOWER,612,23059 + RECC_LOWER, RECC_UPPER,612,23059 + RECC_PUNCT,613,23091 + RECC_PUNCT, RECC_CNTRL,613,23091 + RECC_DIGIT,614,23123 + RECC_DIGIT, RECC_XDIGIT,614,23123 + RECC_BLANK,615,23156 + RECC_BLANK, RECC_SPACE,615,23156 + RECC_MULTIBYTE,616,23188 + RECC_MULTIBYTE, RECC_NONASCII,616,23188 + RECC_ASCII,617,23227 + RECC_ASCII, RECC_UNIBYTE617,23227 +} re_wctype_t;618,23260 +typedef int re_wchar_t;623,23387 + +c-src/emacs/src/keyboard.c,13949 +volatile int interrupt_input_blocked;76,1808 +volatile bool pending_signals;80,1944 +#define KBD_BUFFER_SIZE 82,1976 +KBOARD *initial_kboard;initial_kboard84,2006 +KBOARD *current_kboard;current_kboard85,2030 +static KBOARD *all_kboards;all_kboards86,2054 +static bool single_kboard;89,2154 +#define NUM_RECENT_KEYS 91,2182 +static int recent_keys_index;94,2269 +static int total_keys;97,2357 +static Lisp_Object recent_keys;100,2443 +Lisp_Object this_command_keys;107,2777 +ptrdiff_t this_command_key_count;108,2808 +static bool this_command_key_count_reset;112,2922 +static Lisp_Object raw_keybuf;116,3074 +static int raw_keybuf_count;117,3105 +#define GROW_RAW_KEYBUF 119,3135 +static ptrdiff_t this_single_command_key_start;125,3350 +static ptrdiff_t before_command_key_count;129,3498 +static ptrdiff_t before_command_echo_length;130,3541 +sigjmp_buf return_to_command_loop;135,3677 +static Lisp_Object recover_top_level_message;138,3791 +static Lisp_Object regular_top_level_message;143,3930 +static sys_jmp_buf getcjmp;147,4031 +bool waiting_for_input;150,4095 +static bool echoing;154,4186 +static struct kboard *ok_to_echo_at_next_pause;ok_to_echo_at_next_pause159,4328 +struct kboard *echo_kboard;echo_kboard166,4632 +Lisp_Object echo_message_buffer;171,4744 +bool immediate_quit;174,4837 +int quit_char;192,5623 +EMACS_INT command_loop_level;195,5680 +Lisp_Object unread_switch_frame;204,6108 +static ptrdiff_t last_non_minibuf_size;207,6216 +uintmax_t num_input_events;210,6334 +static EMACS_INT last_auto_save;214,6428 +static ptrdiff_t last_point_position;217,6523 +Lisp_Object internal_last_event_frame;228,7028 +static Lisp_Object read_key_sequence_cmd;232,7168 +static Lisp_Object read_key_sequence_remapped;233,7210 +static FILE *dribble;dribble236,7310 +bool input_pending;239,7368 +static bool input_was_pending;287,10022 +static struct input_event kbd_buffer[kbd_buffer291,10107 +static struct input_event *kbd_fetch_ptr;kbd_fetch_ptr297,10386 +static struct input_event * volatile kbd_store_ptr;302,10601 +unsigned timers_run;320,11296 +struct timespec *input_available_clear_time;input_available_clear_time324,11408 +bool interrupt_input;328,11573 +bool interrupts_deferred;331,11671 +static struct timespec timer_idleness_start_time;335,11746 +static struct timespec timer_last_idleness_start_time;340,11916 +#define READABLE_EVENTS_DO_TIMERS_NOW 346,12046 +#define READABLE_EVENTS_FILTER_EVENTS 347,12094 +#define READABLE_EVENTS_IGNORE_SQUEEZABLES 348,12142 +kset_echo_string 392,14088 +kset_kbd_queue 397,14184 +kset_keyboard_translate_table 402,14276 +kset_last_prefix_arg 407,14399 +kset_last_repeatable_command 412,14504 +kset_local_function_key_map 417,14625 +kset_overriding_terminal_local_map 422,14744 +kset_real_last_command 427,14877 +kset_system_key_syms 432,14986 +echo_add_key 443,15249 +echo_char 527,17527 +echo_dash 541,17813 +echo_now 586,19140 +cancel_echoing 635,20614 +echo_length 648,20922 +echo_truncate 660,21253 +add_command_key 672,21582 +recursive_edit_1 697,22406 +record_auto_save 742,23848 +force_auto_save_soon 751,24016 +DEFUN ("recursive-edit", Frecursive_edit,recursive-edit759,24137 +recursive_edit_unwind 804,25747 +any_kboard_state 817,26013 +single_kboard_state 838,26665 +not_single_kboard_state 848,26803 +struct kboard_stack858,27065 + KBOARD *kboard;kboard860,27087 + struct kboard_stack *next;next861,27105 +static struct kboard_stack *kboard_stack;kboard_stack864,27138 +push_kboard 867,27186 +pop_kboard 879,27375 +temporarily_switch_to_single_kboard 914,28263 +record_single_kboard_state 943,29437 +restore_kboard_configuration 952,29621 +cmd_error 970,30077 +cmd_error_internal 1024,31510 +DEFUN ("command-error-default-function", Fcommand_error_default_function,command-error-default-function1043,32030 +command_loop 1094,33916 +command_loop_2 1134,35135 +top_level_2 1146,35339 +top_level_1 1152,35417 +DEFUN ("top-level", Ftop_level,top-level1164,35787 +user_error 1183,36288 +DEFUN ("exit-recursive-edit", Fexit_recursive_edit,exit-recursive-edit1189,36429 +DEFUN ("abort-recursive-edit", Fabort_recursive_edit,abort-recursive-edit1201,36819 +tracking_off 1216,37281 +DEFUN ("internal--track-mouse", Ftrack_mouse,track-mouse1234,37816 +bool ignore_mouse_drag_p;1256,38392 +some_mouse_moved 1259,38441 +Lisp_Object last_undo_boundary;1287,39032 +command_loop_1 1294,39273 +read_menu_command 1649,50889 +adjust_point_for_property 1678,51617 +safe_run_hooks_1 1831,57339 +safe_run_hooks_error 1841,57569 +safe_run_hook_funcall 1878,58576 +safe_run_hooks 1893,59058 +int poll_suppress_count;1908,59397 +static struct atimer *poll_timer;poll_timer1915,59487 +poll_for_input_1 1919,59589 +poll_for_input 1930,59789 +start_polling 1942,60053 +input_polling_used 1979,61091 +stop_polling 1994,61390 +set_poll_suppress_count 2009,61759 +bind_polling_period 2029,62141 +make_ctrl_char 2048,62492 +show_help_echo 2113,64455 +static Lisp_Object help_form_saved_window_configs;2156,65638 +read_char_help_form_unwind 2158,65701 +#define STOP_POLLING 2166,65959 +#define RESUME_POLLING 2170,66084 +read_event_from_main_queue 2175,66229 +read_decoded_event_from_main_queue 2249,68417 +#define MAX_ENCODED_BYTES 2254,68664 +echo_keystrokes_p 2342,71556 +read_char 2376,72848 +record_menu_key 3225,98949 +help_char_p 3258,99674 +record_char 3273,99953 +save_getcjmp 3412,104235 +restore_getcjmp 3418,104326 +readable_events 3430,104697 +int stop_character EXTERNALLY_VISIBLE;3497,106437 +event_to_kboard 3500,106493 +kbd_buffer_nr_stored 3522,107142 +kbd_buffer_store_event 3534,107483 +kbd_buffer_store_event_hold 3550,108025 +kbd_buffer_unget_event 3684,111617 +#define INPUT_EVENT_POS_MAX 3698,112018 +#define INPUT_EVENT_POS_MIN 3701,112147 +position_to_Time 3706,112287 +Time_to_position 3716,112514 +gen_help_event 3738,113171 +kbd_buffer_store_help_event 3756,113611 +discard_mouse_events 3773,113976 +kbd_buffer_events_waiting 3803,114711 +clear_event 3823,115068 +kbd_buffer_get_event 3836,115408 +process_special_events 4258,127881 +swallow_events 4322,129705 +timer_start_idle 4339,130098 +timer_stop_idle 4355,130576 +timer_resume_idle 4363,130720 +struct input_event last_timer_event EXTERNALLY_VISIBLE;4372,130912 +Lisp_Object pending_funcalls;4377,131172 +decode_timer 4381,131293 +timer_check_2 4414,132246 +timer_check 4572,136817 +DEFUN ("current-idle-time", Fcurrent_idle_time,current-idle-time4607,137662 +static Lisp_Object accent_key_syms;4625,138239 +static Lisp_Object func_key_syms;4626,138275 +static Lisp_Object mouse_syms;4627,138309 +static Lisp_Object wheel_syms;4628,138340 +static Lisp_Object drag_n_drop_syms;4629,138371 +static const int lispy_accent_codes[lispy_accent_codes4634,138516 +static const char *const lispy_accent_keys[lispy_accent_keys4741,139878 +#define FUNCTION_KEY_OFFSET 4766,140314 +const char *const lispy_function_keys[lispy_function_keys4768,140347 +static const char *const lispy_multimedia_keys[lispy_multimedia_keys4962,148901 +static const char *const lispy_kana_keys[lispy_kana_keys5026,150135 +#define FUNCTION_KEY_OFFSET 5061,151751 +static const char *const lispy_function_keys[lispy_function_keys5065,151894 +#define ISO_FUNCTION_KEY_OFFSET 5149,154429 +static const char *const iso_lispy_function_keys[iso_lispy_function_keys5151,154469 +static Lisp_Object Vlispy_mouse_stem;5172,155328 +static const char *const lispy_wheel_names[lispy_wheel_names5174,155367 +static const char *const lispy_drag_n_drop_names[lispy_drag_n_drop_names5181,155619 +static short const scroll_bar_parts[scroll_bar_parts5189,155885 +static Lisp_Object button_down_location;5210,156910 +static int last_mouse_button;5215,157065 +static int last_mouse_x;5216,157095 +static int last_mouse_y;5217,157120 +static Time button_down_time;5218,157145 +static int double_click_count;5222,157229 +make_lispy_position 5228,157390 +toolkit_menubar_in_use 5456,163953 +make_scroll_bar_position 5469,164321 +make_lispy_event 5485,164967 +make_lispy_movement 6104,183531 +make_lispy_switch_frame 6131,184262 +make_lispy_focus_in 6137,184369 +make_lispy_focus_out 6145,184495 +parse_modifiers_uncached 6163,184945 +#define SINGLE_LETTER_MOD(6185,185465 +#undef SINGLE_LETTER_MOD6212,185906 +#define MULTI_LETTER_MOD(6214,185932 +#undef MULTI_LETTER_MOD6231,186400 +apply_modifiers_uncached 6273,187574 +static const char *const modifier_names[modifier_names6319,189193 +#define NUM_MOD_NAMES 6325,189399 +static Lisp_Object modifier_symbols;6327,189449 +lispy_modifier_list 6331,189586 +#define KEY_TO_CHAR(6353,190252 +parse_modifiers 6356,190328 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517 +apply_modifiers 6422,192391 +reorder_modifiers 6491,194720 +modify_event_symbol 6536,196528 +DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199244 +parse_solitary_modifier 6695,201135 +#define SINGLE_LETTER_MOD(6701,201258 +#define MULTI_LETTER_MOD(6705,201343 +#undef SINGLE_LETTER_MOD6763,202641 +#undef MULTI_LETTER_MOD6764,202666 +lucid_event_type_list_p 6775,202889 +get_input_pending 6814,203960 +record_asynch_buffer_change 6834,204579 +gobble_input 6872,205702 +tty_read_avail_input 6967,208310 +handle_async_input 7149,214039 +process_pending_signals 7165,214359 +unblock_input_to 7177,214645 +unblock_input 7200,215277 +totally_unblock_input 7209,215445 +handle_input_available_signal 7217,215529 +deliver_input_available_signal 7226,215700 +struct user_signal_info7235,215865 + int sig;7238,215915 + char *name;name7241,215956 + int npending;7244,216007 + struct user_signal_info *next;next7246,216024 +static struct user_signal_info *user_signals user_signals7250,216090 +add_user_signal 7253,216149 +handle_user_signal 7275,216598 +deliver_user_signal 7316,217558 +find_user_signal_name 7322,217659 +store_user_signal_events 7334,217841 +static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416 +static Lisp_Object menu_bar_items_vector;7368,218630 +static int menu_bar_items_index;7369,218672 +static const char *separator_names[separator_names7372,218707 +menu_separator_name_p 7393,219148 +menu_bar_items 7426,219852 +Lisp_Object item_properties;7568,224603 +menu_bar_item 7571,224645 +menu_item_eval_property_1 7647,227175 +eval_dyn 7658,227465 +menu_item_eval_property 7666,227675 +parse_menu_item 7686,228341 +static Lisp_Object tool_bar_items_vector;7965,236336 +static Lisp_Object tool_bar_item_properties;7970,236510 +static int ntool_bar_items;7974,236606 +tool_bar_items 7990,237083 +process_tool_bar_item 8075,239892 +#define PROP(8112,240969 +set_prop 8114,241038 +parse_tool_bar_item 8167,242453 +#undef PROP8379,248844 +init_tool_bar_items 8387,248969 +append_tool_bar_item 8401,249261 +read_char_x_menu_prompt 8443,250771 +read_char_minibuf_menu_prompt 8503,252445 +#define PUSH_C_STR(8527,253014 +follow_key 8726,258553 +active_maps 8733,258695 +typedef struct keyremap8742,259021 + Lisp_Object parent;8745,259107 + Lisp_Object map;8748,259224 + int start,8753,259446 + int start, end;8753,259446 +} keyremap;8754,259464 +access_keymap_keyremap 8764,259808 +keyremap_step 8811,261450 +test_undefined 8867,262934 +read_key_sequence 8916,264861 +read_key_sequence_vs 9826,295821 +DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299982 +detect_input_pending 9950,300488 +detect_input_pending_ignore_squeezables 9959,300654 +detect_input_pending_run_timers 9967,300870 +clear_input_pending 9985,301362 +requeued_events_pending_p 9997,301732 +DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813 +DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596 +DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303958 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304380 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305495 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306510 +DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069 +DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406 +DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447 +DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949 +stuff_buffered_input 10285,311045 +set_waiting_for_input 10323,312016 +clear_waiting_for_input 10337,312390 +handle_interrupt_signal 10351,312754 +deliver_interrupt_signal 10378,313642 +static int volatile force_quit_count;10387,313932 +handle_interrupt 10401,314414 +quit_throw_to_read_char 10541,318711 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288 +DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320516 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321432 +DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706 +DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570 +DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324459 +DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837 +DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060 +init_kboard 10861,328214 +allocate_kboard 10893,329284 +wipe_kboard 10909,329637 +delete_kboard 10917,329751 +init_keyboard 10942,330281 +struct event_head11021,332696 + short var;11023,332716 + short kind;11024,332729 +static const struct event_head head_table[head_table11027,332747 +syms_of_keyboard 11045,333577 +keys_of_keyboard 11841,367115 +mark_kboards 11916,370434 + +c-src/emacs/src/lisp.h,25767 +#define EMACS_LISP_H22,800 +#define DECLARE_GDB_SYM(47,1421 +# define DEFINE_GDB_SYMBOL_BEGIN(49,1508 +# define DEFINE_GDB_SYMBOL_END(50,1578 +# define DEFINE_GDB_SYMBOL_BEGIN(52,1625 +# define DEFINE_GDB_SYMBOL_END(53,1702 +#undef min57,1790 +#undef max58,1801 +#define max(59,1812 +#define min(60,1854 +#define ARRAYELTS(63,1936 +#define GCTYPEBITS 67,2079 +DEFINE_GDB_SYMBOL_BEGIN GCTYPEBITS66,2037 +# define NONPOINTER_BITS 78,2567 +# define NONPOINTER_BITS 80,2600 +typedef int EMACS_INT;91,3023 +typedef unsigned int EMACS_UINT;92,3046 +# define EMACS_INT_MAX 93,3079 +# define pI 94,3111 +typedef long int EMACS_INT;96,3203 +typedef unsigned long EMACS_UINT;97,3231 +# define EMACS_INT_MAX 98,3265 +# define pI 99,3298 +typedef long long int EMACS_INT;103,3477 +typedef unsigned long long int EMACS_UINT;104,3510 +# define EMACS_INT_MAX 105,3553 +# define pI 106,3587 +enum { BOOL_VECTOR_BITS_PER_CHAR 114,3804 +#define BOOL_VECTOR_BITS_PER_CHAR 115,3840 +typedef size_t bits_word;123,4165 +# define BITS_WORD_MAX 124,4191 +enum { BITS_PER_BITS_WORD 125,4223 +typedef unsigned char bits_word;127,4290 +# define BITS_WORD_MAX 128,4323 +enum { BITS_PER_BITS_WORD 129,4386 + BITS_PER_CHAR 136,4570 + BITS_PER_SHORT 137,4605 + BITS_PER_LONG 138,4657 + BITS_PER_EMACS_INT 139,4712 +typedef intmax_t printmax_t;148,5089 +typedef uintmax_t uprintmax_t;149,5118 +# define pMd 150,5149 +# define pMu 151,5170 +typedef EMACS_INT printmax_t;153,5197 +typedef EMACS_UINT uprintmax_t;154,5227 +# define pMd 155,5259 +# define pMu 156,5278 +# define pD 165,5664 +# define pD 167,5709 +# define pD 169,5756 +# define pD 171,5779 +# define eassert(200,7062 +# define eassume(201,7140 +# define eassert(208,7319 +# define eassume(212,7450 +enum Lisp_Bits239,8519 +#define GCALIGNMENT 243,8647 + VALBITS 246,8742 + INTTYPEBITS 249,8838 + FIXNUM_BITS 252,8945 +#define VAL_MAX 263,9327 +#define USE_LSB_TAG 271,9777 +DEFINE_GDB_SYMBOL_BEGIN USE_LSB_TAG270,9733 +# define alignas(281,10077 +# define GCALIGNED 288,10227 +# define GCALIGNED 290,10292 +# define lisp_h_XLI(327,11642 +# define lisp_h_XIL(328,11673 +# define lisp_h_XLI(330,11724 +# define lisp_h_XIL(331,11751 +#define lisp_h_CHECK_LIST_CONS(333,11785 +#define lisp_h_CHECK_NUMBER(334,11856 +#define lisp_h_CHECK_SYMBOL(335,11927 +#define lisp_h_CHECK_TYPE(336,11996 +#define lisp_h_CONSP(338,12107 +#define lisp_h_EQ(339,12156 +#define lisp_h_FLOATP(340,12201 +#define lisp_h_INTEGERP(341,12252 +#define lisp_h_MARKERP(342,12333 +#define lisp_h_MISCP(343,12408 +#define lisp_h_NILP(344,12457 +#define lisp_h_SET_SYMBOL_VAL(345,12493 +#define lisp_h_SYMBOL_CONSTANT_P(347,12607 +#define lisp_h_SYMBOL_VAL(348,12671 +#define lisp_h_SYMBOLP(350,12772 +#define lisp_h_VECTORLIKEP(351,12825 +#define lisp_h_XCAR(352,12886 +#define lisp_h_XCDR(353,12924 +#define lisp_h_XCONS(354,12964 +#define lisp_h_XHASH(356,13059 +#define lisp_h_XPNTR(357,13093 +# define lisp_h_check_cons_list(360,13221 +# define lisp_h_make_number(363,13289 +# define lisp_h_XFASTINT(365,13392 +# define lisp_h_XINT(366,13429 +# define lisp_h_XSYMBOL(367,13478 +# define lisp_h_XTYPE(371,13631 +# define lisp_h_XUNTAG(372,13696 +# define XLI(381,14086 +# define XIL(382,14117 +# define CHECK_LIST_CONS(383,14148 +# define CHECK_NUMBER(384,14209 +# define CHECK_SYMBOL(385,14258 +# define CHECK_TYPE(386,14307 +# define CONSP(387,14382 +# define EQ(388,14417 +# define FLOATP(389,14452 +# define INTEGERP(390,14489 +# define MARKERP(391,14530 +# define MISCP(392,14569 +# define NILP(393,14604 +# define SET_SYMBOL_VAL(394,14637 +# define SYMBOL_CONSTANT_P(395,14700 +# define SYMBOL_VAL(396,14763 +# define SYMBOLP(397,14812 +# define VECTORLIKEP(398,14851 +# define XCAR(399,14898 +# define XCDR(400,14931 +# define XCONS(401,14964 +# define XHASH(402,14999 +# define XPNTR(403,15034 +# define check_cons_list(405,15097 +# define make_number(408,15176 +# define XFASTINT(409,15224 +# define XINT(410,15266 +# define XSYMBOL(411,15300 +# define XTYPE(412,15340 +# define XUNTAG(413,15376 +#define LISP_MACRO_DEFUN(421,15672 +#define LISP_MACRO_DEFUN_VOID(425,15845 +#define INTMASK 437,16289 +#define case_Lisp_Int 438,16342 +#define ENUM_BF(445,16681 +#define ENUM_BF(447,16722 +enum Lisp_Type451,16763 + Lisp_Symbol 454,16851 + Lisp_Misc 458,16993 + Lisp_Int0 461,17067 + Lisp_Int1 462,17086 + Lisp_String 466,17264 + Lisp_Vectorlike 472,17543 + Lisp_Cons 475,17632 + Lisp_Float 477,17670 +enum Lisp_Misc_Type485,18016 + Lisp_Misc_Free 487,18040 + Lisp_Misc_Marker,488,18069 + Lisp_Misc_Overlay,489,18091 + Lisp_Misc_Save_Value,490,18114 + Lisp_Misc_Finalizer,491,18140 + Lisp_Misc_Float,494,18275 + Lisp_Misc_Limit496,18359 +enum Lisp_Fwd_Type502,18543 + Lisp_Fwd_Int,504,18566 + Lisp_Fwd_Bool,505,18619 + Lisp_Fwd_Obj,506,18670 + Lisp_Fwd_Buffer_Obj,507,18729 + Lisp_Fwd_Kboard_Obj 508,18800 +typedef struct { EMACS_INT i;567,21781 +typedef struct { EMACS_INT i; } Lisp_Object;567,21781 +#define LISP_INITIALLY(569,21827 +#undef CHECK_LISP_OBJECT_TYPE571,21858 +enum CHECK_LISP_OBJECT_TYPE 572,21888 +enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 572,21888 +typedef EMACS_INT Lisp_Object;577,22064 +#define LISP_INITIALLY(578,22095 +enum CHECK_LISP_OBJECT_TYPE 579,22125 +enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 579,22125 +#define LISP_INITIALLY_ZERO 582,22226 +enum symbol_interned639,24199 + SYMBOL_UNINTERNED 641,24222 + SYMBOL_INTERNED 642,24247 + SYMBOL_INTERNED_IN_INITIAL_OBARRAY 643,24270 +enum symbol_redirect646,24315 + SYMBOL_PLAINVAL 648,24338 + SYMBOL_VARALIAS 649,24362 + SYMBOL_LOCALIZED 650,24386 + SYMBOL_FORWARDED 651,24410 +struct Lisp_Symbol654,24437 + bool_bf gcmarkbit 656,24458 + ENUM_BF 663,24793 + Lisp_Object value;687,25631 + struct Lisp_Symbol *alias;alias688,25654 + struct Lisp_Buffer_Local_Value *blv;blv689,25685 + union Lisp_Fwd *fwd;fwd690,25726 + } val;691,25751 + Lisp_Object function;694,25823 + Lisp_Object plist;697,25885 + struct Lisp_Symbol *next;next700,25974 +#define EXFUN(707,26252 +#define DEFUN_ARGS_MANY 712,26446 +#define DEFUN_ARGS_UNEVALLED 713,26498 +#define DEFUN_ARGS_0 714,26541 +#define DEFUN_ARGS_1 715,26569 +#define DEFUN_ARGS_2 716,26604 +#define DEFUN_ARGS_3 717,26652 +#define DEFUN_ARGS_4 718,26713 +#define DEFUN_ARGS_5 719,26787 +#define DEFUN_ARGS_6 721,26880 +#define DEFUN_ARGS_7 723,26986 +#define DEFUN_ARGS_8 725,27105 +#define TAG_PTR(729,27296 +#define TAG_SYMOFFSET(734,27543 +#define XLI_BUILTIN_LISPSYM(741,27842 +#define DEFINE_LISP_SYMBOL(746,28101 +# define DEFINE_NON_NIL_Q_SYMBOL_MACROS 755,28572 +LISP_MACRO_DEFUN 762,28777 +# define ARRAY_MARK_FLAG 768,29024 +# define PSEUDOVECTOR_FLAG 774,29267 +enum pvec_type780,29568 + PVEC_NORMAL_VECTOR,782,29585 + PVEC_FREE,783,29607 + PVEC_PROCESS,784,29620 + PVEC_FRAME,785,29636 + PVEC_WINDOW,786,29650 + PVEC_BOOL_VECTOR,787,29665 + PVEC_BUFFER,788,29685 + PVEC_HASH_TABLE,789,29700 + PVEC_TERMINAL,790,29719 + PVEC_WINDOW_CONFIGURATION,791,29736 + PVEC_SUBR,792,29765 + PVEC_OTHER,793,29778 + PVEC_COMPILED,795,29856 + PVEC_CHAR_TABLE,796,29873 + PVEC_SUB_CHAR_TABLE,797,29892 + PVEC_FONT 798,29915 +enum More_Lisp_Bits801,29991 + PSEUDOVECTOR_SIZE_BITS 808,30382 + PSEUDOVECTOR_SIZE_MASK 809,30415 + PSEUDOVECTOR_REST_BITS 813,30625 + PSEUDOVECTOR_REST_MASK 814,30658 + PSEUDOVECTOR_AREA_BITS 818,30823 + PVEC_TYPE_MASK 819,30901 +# define VALMASK 829,31302 +DEFINE_GDB_SYMBOL_BEGIN VALMASK828,31257 +#define MOST_POSITIVE_FIXNUM 834,31532 +#define MOST_NEGATIVE_FIXNUM 835,31592 +XINT 874,32684 +XFASTINT 889,33035 +XSYMBOL 899,33263 +XTYPE 910,33481 +XUNTAG 918,33661 +LISP_MACRO_DEFUN 927,33857 +LISP_MACRO_DEFUN 940,34242 +#define FIXNUM_OVERFLOW_P(958,34855 +LISP_MACRO_DEFUN FIXNUM_OVERFLOW_P952,34632 +LISP_MACRO_DEFUN 970,35171 +XSTRING 980,35391 +#define SYMBOL_INDEX(988,35575 +XFLOAT 991,35636 +XPROCESS 1000,35778 +XWINDOW 1007,35895 +XTERMINAL 1014,36012 +XSUBR 1021,36134 +XBUFFER 1028,36245 +XCHAR_TABLE 1035,36369 +XSUB_CHAR_TABLE 1042,36506 +XBOOL_VECTOR 1049,36648 +make_lisp_ptr 1058,36827 +make_lisp_symbol 1066,37013 +builtin_lisp_symbol 1074,37197 +#define XSETINT(1079,37279 +#define XSETFASTINT(1080,37325 +#define XSETCONS(1081,37375 +#define XSETVECTOR(1082,37435 +#define XSETSTRING(1083,37503 +#define XSETSYMBOL(1084,37567 +#define XSETFLOAT(1085,37621 +#define XSETMISC(1086,37683 +#define XSETPVECTYPE(1090,37772 +#define XSETPVECTYPESIZE(1092,37888 +#define XSETPSEUDOVECTOR(1099,38185 +#define XSETTYPED_PSEUDOVECTOR(1105,38369 +#define XSETWINDOW_CONFIGURATION(1110,38579 +#define XSETPROCESS(1112,38675 +#define XSETWINDOW(1113,38741 +#define XSETTERMINAL(1114,38805 +#define XSETSUBR(1115,38873 +#define XSETCOMPILED(1116,38933 +#define XSETBUFFER(1117,39001 +#define XSETCHAR_TABLE(1118,39065 +#define XSETBOOL_VECTOR(1119,39137 +#define XSETSUB_CHAR_TABLE(1120,39211 +XINTPTR 1128,39581 +make_pointer_integer 1134,39661 +LISP_MACRO_DEFUN_VOID 1143,39826 +typedef struct interval *INTERVAL;INTERVAL1149,39987 + Lisp_Object cdr;1159,40162 + struct Lisp_Cons *chain;chain1162,40236 +xcar_addr 1174,40760 +xcdr_addr 1179,40837 +LISP_MACRO_DEFUN 1185,40931 +XSETCDR 1198,41307 +CAR 1205,41457 +CDR 1212,41591 +CAR_SAFE 1221,41791 +CDR_SAFE 1226,41877 +STRING_MULTIBYTE 1243,42250 +#define STRING_BYTES_BOUND 1261,43057 +#define STRING_SET_UNIBYTE(1265,43201 +#define STRING_SET_MULTIBYTE(1275,43516 +SDATA 1286,43830 +SSDATA 1291,43908 +SREF 1297,44037 +SSET 1302,44128 +SCHARS 1307,44242 +STRING_BYTES 1316,44415 +SBYTES 1326,44595 +STRING_SET_CHARS 1331,44681 +struct vectorlike_header1343,45232 + ptrdiff_t size;1364,46383 +struct Lisp_Vector1369,46482 + struct vectorlike_header header;1371,46505 + Lisp_Object contents[contents1372,46542 + ALIGNOF_STRUCT_LISP_VECTOR1378,46681 +struct Lisp_Bool_Vector1384,46864 + struct vectorlike_header header;1388,47012 + EMACS_INT size;1390,47086 + bits_word data[data1395,47319 +bool_vector_size 1399,47385 +bool_vector_data 1407,47523 +bool_vector_uchar_data 1413,47617 +bool_vector_words 1421,47803 +bool_vector_bytes 1428,47998 +bool_vector_bitref 1437,48238 +bool_vector_ref 1445,48478 +bool_vector_set 1453,48618 + header_size 1471,49047 + bool_header_size 1472,49106 + word_size 1473,49171 +AREF 1479,49284 +aref_addr 1485,49391 +ASIZE 1491,49501 +ASET 1497,49583 +gc_aset 1504,49742 +enum { NIL_IS_ZERO 1515,50269 +memclear 1520,50464 +#define VECSIZE(1531,50762 +#define PSEUDOVECSIZE(1538,51047 +#define UNSIGNED_CMP(1546,51480 +#define ASCII_CHAR_P(1552,51734 +enum CHARTAB_SIZE_BITS1565,52489 + CHARTAB_SIZE_BITS_0 1567,52516 + CHARTAB_SIZE_BITS_1 1568,52545 + CHARTAB_SIZE_BITS_2 1569,52574 + CHARTAB_SIZE_BITS_3 1570,52603 +struct Lisp_Char_Table1575,52672 + struct vectorlike_header header;1581,52928 + Lisp_Object defalt;1585,53078 + Lisp_Object parent;1590,53280 + Lisp_Object purpose;1594,53398 + Lisp_Object ascii;1598,53564 + Lisp_Object contents[contents1600,53588 + Lisp_Object extras[extras1603,53699 +struct Lisp_Sub_Char_Table1606,53752 + struct vectorlike_header header;1610,53918 + int depth;1618,54341 + int min_char;1621,54417 + Lisp_Object contents[contents1624,54492 +CHAR_TABLE_REF_ASCII 1628,54566 +CHAR_TABLE_REF 1648,55113 +CHAR_TABLE_SET 1658,55402 +struct Lisp_Subr1670,55786 + struct vectorlike_header header;1672,55807 + Lisp_Object (*a0)a01674,55856 + Lisp_Object (*a1)a11675,55888 + Lisp_Object (*a2)a21676,55927 + Lisp_Object (*a3)a31677,55979 + Lisp_Object (*a4)a41678,56044 + Lisp_Object (*a5)a51679,56122 + Lisp_Object (*a6)a61680,56213 + Lisp_Object (*a7)a71681,56317 + Lisp_Object (*a8)a81682,56434 + Lisp_Object (*aUNEVALLED)aUNEVALLED1683,56564 + Lisp_Object (*aMANY)aMANY1684,56616 + } function;1685,56671 + short min_args,1686,56687 + short min_args, max_args;1686,56687 + const char *symbol_name;symbol_name1687,56717 + const char *intspec;intspec1688,56746 + const char *doc;doc1689,56771 +enum char_table_specials1692,56798 + CHAR_TABLE_STANDARD_SLOTS 1697,56993 + SUB_CHAR_TABLE_OFFSET 1701,57214 +CHAR_TABLE_EXTRA_SLOTS 1707,57377 +LISP_MACRO_DEFUN 1723,57921 +SYMBOL_BLV 1732,58181 +SYMBOL_FWD 1738,58316 +LISP_MACRO_DEFUN_VOID 1744,58428 +SET_SYMBOL_BLV 1754,58691 +SET_SYMBOL_FWD 1760,58850 +SYMBOL_NAME 1767,59001 +SYMBOL_INTERNED_P 1775,59130 +SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P 1783,59299 +#define DEFSYM(1796,59809 +LISP_MACRO_DEFUN DEFSYM1792,59630 +struct hash_table_test1805,60062 + Lisp_Object name;1808,60139 + Lisp_Object user_hash_function;1811,60206 + Lisp_Object user_cmp_function;1814,60297 + bool (*cmpfn)cmpfn1817,60372 + EMACS_UINT (*hashfn)hashfn1820,60486 +struct Lisp_Hash_Table1823,60555 + struct vectorlike_header header;1826,60649 + Lisp_Object weak;1830,60783 + Lisp_Object rehash_size;1835,61007 + Lisp_Object rehash_threshold;1839,61129 + Lisp_Object hash;1843,61260 + Lisp_Object next;1848,61490 + Lisp_Object next_free;1851,61560 + Lisp_Object index;1856,61771 + ptrdiff_t count;1863,62041 + Lisp_Object key_and_value;1868,62240 + struct hash_table_test test;1871,62314 + struct Lisp_Hash_Table *next_weak;next_weak1875,62457 +XHASH_TABLE 1880,62531 +#define XSET_HASH_TABLE(1885,62602 +HASH_TABLE_P 1889,62703 +HASH_KEY 1896,62860 +HASH_VALUE 1903,63040 +HASH_NEXT 1911,63254 +HASH_HASH 1918,63431 +HASH_INDEX 1926,63677 +HASH_TABLE_SIZE 1933,63826 +enum DEFAULT_HASH_SIZE 1940,63956 +enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE 1940,63956 +static double const DEFAULT_REHASH_THRESHOLD 1946,64176 +static double const DEFAULT_REHASH_SIZE 1950,64299 +sxhash_combine 1956,64465 +SXHASH_REDUCE 1964,64648 +struct Lisp_Misc_Any 1971,64806 + ENUM_BF 1973,64866 +struct Lisp_Marker1978,64980 + ENUM_BF 1980,65001 +struct Lisp_Overlay2021,66841 + ENUM_BF 2034,67349 + SAVE_UNUSED,2047,67644 + SAVE_INTEGER,2048,67661 + SAVE_FUNCPOINTER,2049,67679 + SAVE_POINTER,2050,67701 + SAVE_OBJECT2051,67719 +enum { SAVE_SLOT_BITS 2055,67804 +enum { SAVE_VALUE_SLOTS 2058,67901 +enum { SAVE_TYPE_BITS 2062,68009 +enum Lisp_Save_Type2064,68075 + SAVE_TYPE_INT_INT 2066,68099 + SAVE_TYPE_INT_INT_INT2067,68172 + SAVE_TYPE_OBJ_OBJ 2069,68262 + SAVE_TYPE_OBJ_OBJ_OBJ 2070,68333 + SAVE_TYPE_OBJ_OBJ_OBJ_OBJ2071,68414 + SAVE_TYPE_PTR_INT 2073,68509 + SAVE_TYPE_PTR_OBJ 2074,68582 + SAVE_TYPE_PTR_PTR 2075,68654 + SAVE_TYPE_FUNCPTR_PTR_OBJ2076,68727 + SAVE_TYPE_MEMORY 2080,68885 +typedef void (*voidfuncptr)voidfuncptr2108,69839 +struct Lisp_Save_Value2110,69876 + ENUM_BF 2112,69903 + void *pointer;pointer2125,70558 + voidfuncptr funcpointer;2126,70579 + ptrdiff_t integer;2127,70610 + Lisp_Object object;2128,70635 + } data[data2129,70661 +save_type 2134,70755 +XSAVE_POINTER 2143,70985 +set_save_pointer 2149,71147 +XSAVE_FUNCPOINTER 2155,71329 +XSAVE_INTEGER 2164,71549 +set_save_integer 2170,71711 +XSAVE_OBJECT 2179,71932 +struct Lisp_Finalizer2186,72109 + struct Lisp_Misc_Any base;2188,72135 + struct Lisp_Finalizer *prev;prev2191,72223 + struct Lisp_Finalizer *next;next2192,72256 + Lisp_Object function;2197,72493 +struct Lisp_Free2201,72584 + ENUM_BF 2203,72605 +union Lisp_Misc2212,72885 + struct Lisp_Misc_Any u_any;2214,72905 + struct Lisp_Free u_free;2215,72976 + struct Lisp_Marker u_marker;2216,73005 + struct Lisp_Overlay u_overlay;2217,73038 + struct Lisp_Save_Value u_save_value;2218,73073 + struct Lisp_Finalizer u_finalizer;2219,73114 +XMISC 2223,73184 +XMISCANY 2229,73273 +XMISCTYPE 2236,73382 +XMARKER 2242,73470 +XOVERLAY 2249,73585 +XSAVE_VALUE 2256,73706 +XFINALIZER 2263,73835 +struct Lisp_Intfwd2274,74120 + enum Lisp_Fwd_Type type;2276,74143 + EMACS_INT *intvar;intvar2277,74193 +struct Lisp_Boolfwd2284,74414 + enum Lisp_Fwd_Type type;2286,74438 + bool *boolvar;boolvar2287,74489 +struct Lisp_Objfwd2294,74705 + enum Lisp_Fwd_Type type;2296,74728 + Lisp_Object *objvar;objvar2297,74778 +struct Lisp_Buffer_Objfwd2302,74937 + enum Lisp_Fwd_Type type;2304,74967 + int offset;2305,75024 + Lisp_Object predicate;2307,75116 +struct Lisp_Buffer_Local_Value2334,76473 + bool_bf local_if_set 2338,76618 + bool_bf frame_local 2341,76800 + bool_bf found 2344,76942 + union Lisp_Fwd *fwd;fwd2346,77044 + Lisp_Object where;2348,77187 + Lisp_Object defcell;2351,77313 + Lisp_Object valcell;2357,77617 +struct Lisp_Kboard_Objfwd2362,77732 + enum Lisp_Fwd_Type type;2364,77762 + int offset;2365,77819 +union Lisp_Fwd2368,77841 + struct Lisp_Intfwd u_intfwd;2370,77860 + struct Lisp_Boolfwd u_boolfwd;2371,77893 + struct Lisp_Objfwd u_objfwd;2372,77928 + struct Lisp_Buffer_Objfwd u_buffer_objfwd;2373,77961 + struct Lisp_Kboard_Objfwd u_kboard_objfwd;2374,78008 +XFWDTYPE 2378,78087 +XBUFFER_OBJFWD 2384,78183 +struct Lisp_Float2391,78319 + double data;2395,78357 + struct Lisp_Float *chain;chain2396,78376 + } u;2397,78408 +XFLOAT_DATA 2401,78437 + IEEE_FLOATING_POINT2415,78946 +#define _UCHAR_T2423,79269 +typedef unsigned char UCHAR;2424,79286 +enum Lisp_Compiled2429,79369 + COMPILED_ARGLIST 2431,79392 + COMPILED_BYTECODE 2432,79418 + COMPILED_CONSTANTS 2433,79445 + COMPILED_STACK_DEPTH 2434,79473 + COMPILED_DOC_STRING 2435,79503 + COMPILED_INTERACTIVE 2436,79532 +enum char_bits2443,79834 + CHAR_ALT 2445,79853 + CHAR_SUPER 2446,79879 + CHAR_HYPER 2447,79907 + CHAR_SHIFT 2448,79935 + CHAR_CTL 2449,79963 + CHAR_META 2450,79989 + CHAR_MODIFIER_MASK 2452,80017 + CHARACTERBITS 2457,80212 +LISP_MACRO_DEFUN 2462,80270 +NATNUMP 2470,80412 +RANGED_INTEGERP 2476,80493 +#define TYPE_RANGED_INTEGERP(2481,80615 +LISP_MACRO_DEFUN 2486,80800 +VECTORP 2500,81273 +OVERLAYP 2505,81376 +SAVE_VALUEP 2510,81475 +FINALIZERP 2516,81581 +AUTOLOADP 2522,81685 +BUFFER_OBJFWDP 2528,81776 +PSEUDOVECTOR_TYPEP 2534,81874 +PSEUDOVECTORP 2542,82127 +WINDOW_CONFIGURATIONP 2558,82479 +PROCESSP 2564,82589 +WINDOWP 2570,82673 +TERMINALP 2576,82755 +SUBRP 2582,82841 +COMPILEDP 2588,82919 +BUFFERP 2594,83005 +CHAR_TABLE_P 2600,83087 +SUB_CHAR_TABLE_P 2606,83178 +BOOL_VECTOR_P 2612,83277 +FRAMEP 2618,83370 +IMAGEP 2625,83487 +ARRAYP 2632,83592 +CHECK_LIST 2638,83711 +LISP_MACRO_DEFUN_VOID 2643,83792 +CHECK_STRING_CAR 2653,84089 +CHECK_CONS 2658,84193 +CHECK_VECTOR 2663,84273 +CHECK_BOOL_VECTOR 2668,84359 +CHECK_VECTOR_OR_STRING 2674,84536 +CHECK_ARRAY 2683,84710 +CHECK_BUFFER 2688,84818 +CHECK_WINDOW 2693,84904 +CHECK_PROCESS 2699,85010 +CHECK_NATNUM 2705,85106 +#define CHECK_RANGED_INTEGER(2710,85183 +#define CHECK_TYPE_RANGED_INTEGER(2721,85566 +#define CHECK_NUMBER_COERCE_MARKER(2729,85836 +XFLOATINT 2738,86089 +CHECK_NUMBER_OR_FLOAT 2744,86160 +#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(2749,86259 +CHECK_NUMBER_CAR 2760,86669 +CHECK_NUMBER_CDR 2768,86791 +#define DEFUN(2803,88386 +#define DEFUN(2812,88854 +FUNCTIONP 2822,89209 +enum maxargs2831,89404 + MANY 2833,89421 + UNEVALLED 2834,89436 +#define CALLMANY(2838,89539 +#define CALLN(2844,89892 +#define DEFVAR_LISP(2869,91097 +#define DEFVAR_LISP_NOPRO(2874,91269 +#define DEFVAR_BOOL(2879,91451 +#define DEFVAR_INT(2884,91624 +#define DEFVAR_BUFFER_DEFAULTS(2890,91795 +#define DEFVAR_KBOARD(2896,91999 +typedef jmp_buf sys_jmp_buf;2906,92323 +# define sys_setjmp(2907,92352 +# define sys_longjmp(2908,92387 +typedef sigjmp_buf sys_jmp_buf;2910,92459 +# define sys_setjmp(2911,92491 +# define sys_longjmp(2912,92531 +typedef jmp_buf sys_jmp_buf;2916,92690 +# define sys_setjmp(2917,92719 +# define sys_longjmp(2918,92753 +enum specbind_tag 2943,93805 + SPECPDL_UNWIND,2944,93825 + SPECPDL_UNWIND_PTR,2945,93894 + SPECPDL_UNWIND_INT,2946,93945 + SPECPDL_UNWIND_VOID,2947,93993 + SPECPDL_BACKTRACE,2948,94047 + SPECPDL_LET,2949,94105 + SPECPDL_LET_LOCAL,2951,94235 + SPECPDL_LET_DEFAULT 2952,94292 +union specbinding2955,94364 + ENUM_BF 2957,94386 + ENUM_BF 2959,94443 + ENUM_BF 2964,94573 + ENUM_BF 2969,94696 + ENUM_BF 2974,94814 + ENUM_BF 2978,94919 + ENUM_BF 2983,95094 +enum handlertype 3021,96410 +enum handlertype { CATCHER,3021,96410 +enum handlertype { CATCHER, CONDITION_CASE 3021,96410 +struct handler3023,96457 + enum handlertype type;3025,96474 + Lisp_Object tag_or_ch;3026,96499 + Lisp_Object val;3027,96524 + struct handler *next;next3028,96543 + struct handler *nextfree;nextfree3029,96567 + Lisp_Object *bytecode_top;bytecode_top3036,96925 + int bytecode_dest;3037,96954 + struct gcpro *gcpro;gcpro3042,97191 + sys_jmp_buf jmp;3044,97221 + EMACS_INT lisp_eval_depth;3045,97240 + ptrdiff_t pdlcount;3046,97269 + int poll_suppress_count;3047,97291 + int interrupt_input_blocked;3048,97318 + struct byte_stack *byte_stack;byte_stack3049,97349 +#define PUSH_HANDLER(3053,97446 +#define QUIT 3101,99223 +#define QUITP 3112,99473 +struct gcpro3132,100316 + struct gcpro *next;next3134,100331 + volatile Lisp_Object *var;var3137,100400 + ptrdiff_t nvars;3140,100482 + const char *name;name3144,100567 + int lineno;3147,100623 + int idx;3150,100684 + int level;3153,100720 +#define GC_USE_GCPROS_AS_BEFORE 3171,101297 +#define GC_MAKE_GCPROS_NOOPS 3172,101332 +#define GC_MARK_STACK_CHECK_GCPROS 3173,101364 +#define GC_USE_GCPROS_CHECK_ZOMBIES 3174,101401 +#define GC_MARK_STACK 3177,101462 +#define BYTE_MARK_STACK 3181,101562 +#define GCPRO1(3190,101833 +#define GCPRO2(3191,101873 +#define GCPRO3(3192,101939 +#define GCPRO4(3194,102034 +#define GCPRO5(3196,102154 +#define GCPRO6(3198,102299 +#define GCPRO7(3201,102474 +#define UNGCPRO 3202,102553 +#define GCPRO1(3208,102653 +#define GCPRO2(3212,102775 +#define GCPRO3(3217,102967 +#define GCPRO4(3223,103229 +#define GCPRO5(3230,103560 +#define GCPRO6(3238,103961 +#define GCPRO7(3247,104431 +#define UNGCPRO 3257,104971 +#define GCPRO1(3263,105065 +#define GCPRO2(3269,105299 +#define GCPRO3(3278,105717 +#define GCPRO4(3289,106274 +#define GCPRO5(3302,106972 +#define GCPRO6(3317,107812 +#define GCPRO7(3334,108793 +#define UNGCPRO 3353,109916 +#define RETURN_UNGCPRO(3363,110183 +vcopy 3384,110657 +set_hash_key_slot 3393,110932 +set_hash_value_slot 3399,111071 +set_symbol_function 3408,111306 +set_symbol_plist 3414,111421 +set_symbol_next 3420,111524 +blv_found 3428,111697 +set_overlay_plist 3437,111880 +string_intervals 3445,112031 +set_string_intervals 3453,112153 +set_char_table_defalt 3462,112355 +set_char_table_purpose 3467,112467 +set_char_table_extras 3475,112636 +set_char_table_contents 3482,112845 +set_sub_char_table_contents 3489,113040 +enum Arith_Comparison 3497,113303 + ARITH_EQUAL,3498,113327 + ARITH_NOTEQUAL,3499,113342 + ARITH_LESS,3500,113360 + ARITH_GRTR,3501,113374 + ARITH_LESS_OR_EQUAL,3502,113388 + ARITH_GRTR_OR_EQUAL3503,113411 +#define INTEGER_TO_CONS(3511,113762 +#define CONS_TO_INTEGER(3529,114625 +enum { NEXT_ALMOST_PRIME_LIMIT 3573,116329 +extern EMACS_INT next_almost_prime 3574,116368 +enum constype 3739,123820 +enum constype {CONSTYPE_HEAP,CONSTYPE_HEAP3739,123820 +enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}CONSTYPE_PURE3739,123820 +list2i 3745,124010 +list3i 3751,124119 +list4i 3757,124258 +extern Lisp_Object make_formatted_string 3767,124634 +build_pure_c_string 3792,125662 +build_string 3801,125867 +make_uninit_vector 3820,126438 +make_uninit_sub_char_table 3833,126657 +#define ALLOCATE_PSEUDOVECTOR(3850,127201 +#define ALLOCATE_ZEROED_PSEUDOVECTOR(3858,127537 +INLINE void 3890,128943 +extern void *r_alloc r_alloc3895,129064 +#define FLOAT_TO_STRING_BUFSIZE 3927,130527 +intern 3968,132134 +intern_c_string 3974,132222 +extern _Noreturn void error 4034,135601 +fast_string_match_ignore_case 4136,140089 +INLINE void fixup_locale 4241,143854 +INLINE void synchronize_system_messages_locale 4242,143889 +INLINE void synchronize_system_time_locale 4243,143946 +#define IS_DAEMON 4257,144419 +#define DAEMON_RUNNING 4258,144459 +#define IS_DAEMON 4261,144558 +#define DAEMON_RUNNING 4262,144603 +# define WAIT_READING_MAX 4281,145422 +# define WAIT_READING_MAX 4283,145494 +extern _Noreturn void emacs_abort 4374,148386 +egetenv 4532,152809 +#define eabs(4545,153305 +#define make_fixnum_or_float(4550,153438 +enum MAX_ALLOCA 4556,153689 +enum MAX_ALLOCA { MAX_ALLOCA 4556,153689 +extern void *record_xmalloc record_xmalloc4558,153734 +#define USE_SAFE_ALLOCA 4560,153800 +#define AVAIL_ALLOCA(4564,153933 +#define SAFE_ALLOCA(4568,154044 +#define SAFE_NALLOCA(4576,154385 +#define SAFE_ALLOCA_STRING(4590,154861 +#define SAFE_FREE(4598,155113 +#define SAFE_ALLOCA_LISP(4625,155691 +# define USE_STACK_LISP_OBJECTS 4652,156813 +# undef USE_STACK_LISP_OBJECTS4658,156979 +# define USE_STACK_LISP_OBJECTS 4659,157010 +enum { defined_GC_CHECK_STRING_BYTES 4663,157085 +enum { defined_GC_CHECK_STRING_BYTES 4665,157138 +union Aligned_Cons4670,157272 + struct Lisp_Cons s;4672,157293 + double d;4673,157315 + double d; intmax_t i;4673,157315 + double d; intmax_t i; void *p;p4673,157315 +union Aligned_String4676,157352 + struct Lisp_String s;4678,157375 + double d;4679,157399 + double d; intmax_t i;4679,157399 + double d; intmax_t i; void *p;p4679,157399 + USE_STACK_CONS 4689,157707 + USE_STACK_STRING 4691,157813 +#define STACK_CONS(4699,158150 +#define AUTO_CONS_EXPR(4701,158247 +#define AUTO_CONS(4709,158610 +#define AUTO_LIST1(4710,158681 +#define AUTO_LIST2(4712,158789 +#define AUTO_LIST3(4716,158944 +#define AUTO_LIST4(4720,159119 +# define verify_ascii(4732,159510 +#define AUTO_STRING(4740,159818 +#define FOR_EACH_TAIL(4752,160282 +#define FOR_EACH_ALIST_VALUE(4766,160773 +maybe_gc 4774,161060 +functionp 4784,161299 + +c-src/machsyscalls.c,23 +#define SYSCALL(6,113 + +c-src/machsyscalls.h,159 +SYSCALL (mach_msg_trap,1,0 +SYSCALL (mach_reply_port,13,314 +SYSCALL (mach_thread_self,18,377 +SYSCALL (mach_task_self,23,441 +SYSCALL (mach_host_self,28,503 + +c-src/h.h,2394 + ELEM_I/ELEM_I3,15 +} Fails_t;5,85 +typedef void Lang_function 6,96 +typedef struct tpcmd8,147 +#define ggg 10,170 + } arg;13,198 +tpcmd;15,209 +typedef struct foobar2_ 16,216 + fu int (*funcptr)funcptr17,242 + long foo;18,279 + char bar;19,293 +} foobar2;20,307 + DEVICE_SWP,23,333 + DEVICE_LAST24,349 +} bsp_DevId;25,365 + struct constant_args 27,394 + unsigned int burst;28,419 + } constant;29,443 +} args;30,457 +typedef int *regset;regset31,465 +typedef int INT;32,486 +typedef union abc33,503 + int def;35,523 +} ghi1;36,534 +typedef union abc 37,542 + int def;38,562 +} ghi2;39,573 +typedef struct a 40,581 +} b;41,600 +#define c(42,605 +typedef struct an_extern_linkage *an_extern_linkage_ptr;an_extern_linkage_ptr43,619 +typedef struct an_extern_linkage 44,676 + kind;46,733 + is_explicit;49,812 + a_byte_boolean is_curly_brace_form;54,1009 +} an_extern_linkage;56,1054 +typedef struct pollfd pfdset[pfdset57,1075 +typedef union rtunion_def58,1119 + int rtint;60,1149 + char *rtstr;rtstr61,1164 + struct rtx_def *rtx;rtx62,1181 + } womboid 63,1206 +typedef union rtunion_def64,1220 + int rtint;68,1250 + char *rtstr;rtstr69,1263 + struct rtx_def *rtxp;rtxp70,1278 + struct rtx_def rtxnp;71,1302 +womboid75,1330 +enum {dog,dog81,1416 +enum {dog, cat}cat81,1416 +enum {dog, cat} animals;81,1416 +typedef void (_CALLBACK_ *signal_handler)signal_handler82,1441 +typedef void (_CALLBACK_ *signal_handler1)signal_handler183,1489 +/* comment */ #define ANSIC84,1538 + #define ANSIC85,1566 +typedef void (proc)87,1588 +typedef void OperatorFun(88,1612 +typedef int f(89,1648 +struct my_struct 91,1691 +typedef struct my_struct my_typedef;93,1713 +typedef RETSIGTYPE (*signal_handler_t)signal_handler_t94,1750 + Date 04 May 87 235311 PDT 96,1802 +typedef unsigned char unchar;99,1880 +typedef int X,100,1910 +typedef int X, Y,100,1910 +typedef int X, Y, Z;100,1910 +typedef mio mao;101,1931 +typedef struct a 103,1966 +typedef struct a { } b;103,1966 +typedef struct b104,1990 +} c;106,2009 +int extvar;109,2053 +#define tag1110,2065 +#define aaaaaa 111,2078 +#define bbbbbb\bbbbbb113,2102 +#define cccccccccc115,2125 +#define enter_critical_section 116,2144 +#define exit_critical_to_previous 117,2199 +#define UNDEFINED118,2259 +struct re_pattern_buffer 119,2277 +struct re_pattern_buffer { unsigned char *buffer;buffer119,2277 + +cp-src/c.C,2849 +template ,ipcMultiChannel,ipc3dLinkControl> mcCSC;6,227 + advTimer cscInitTime;7,388 + advTimer cscSegmentationTime;8,418 + advTimer outputTime;9,456 + void execute(11,493 +int main 25,1026 +double base 26,1088 +typedef struct s1 32,1251 + int counter;33,1271 +} t1;34,1287 +struct s2 35,1293 + int counter;36,1305 +typedef struct s2 t2;38,1324 +class A 39,1346 + enum { rosso,40,1356 + enum { rosso, giallo,40,1356 + enum { rosso, giallo, verde 40,1356 + enum { rosso, giallo, verde } colori;40,1356 +const A& A::operator+(operator+43,1431 +void operator+(44,1467 +void operator -(operator -45,1495 +void operator int(operator int46,1524 +A* f(48,1556 +int f(49,1571 +int A::f(f50,1590 +A > A,int>::f(f51,1618 +template class AT 52,1668 +template class AT { C t[t52,1668 +class AU 53,1716 +class AU { T x;53,1716 +class B<B54,1735 +class B { void f(54,1735 +const A::B::T& abt 55,1766 +class A 56,1792 +class A { class B 56,1792 +class A 57,1827 + A operator+(59,1861 +is_muldiv_operation(61,1888 +domain foo 68,1956 + void f(69,1969 +void A::A(A72,1990 +struct A 73,2005 +struct B 74,2023 +void B::B(B75,2042 +void BE_Node::BE_Node(BE_Node76,2057 +class BE_Node 77,2084 +struct foo 79,2103 + int x;80,2116 +class test 86,2157 + int f(87,2170 + int ff(89,2232 + int g(90,2255 +class AST_Root 92,2279 +AST_ConcreteType::AST_ConcreteType(99,2394 +AST_Array::AST_Array(107,2533 + void f(115,2734 +struct A 117,2754 +A::~A(~A120,2778 +struct B 122,2790 + ~B(123,2801 +enum {dog,dog126,2818 +enum {dog, cat}cat126,2818 +enum {dog, cat} animals;126,2818 +struct {int teats;127,2843 +struct {int teats;} cow;127,2843 +class Boo 129,2869 + enum {dog,dog130,2881 + enum {dog, cat}cat130,2881 + enum {dog, cat} animals;130,2881 + struct {int treats;131,2910 + struct {int treats;} cow;131,2910 + int i,132,2940 + int i,a,132,2940 + int i,a,b;132,2940 + foo(133,2955 + Boo(137,2996 +Boo::Boo(141,3071 +typedef int should_see_this_one_enclosed_in_extern_C;149,3156 +typedef int (*should_see_this_function_pointer)should_see_this_function_pointer153,3229 +typedef int should_see_this_array_type[should_see_this_array_type156,3311 + +cp-src/x.cc,63 +class XX1,0 +XX::foo(foo9,60 +XX::bar(bar15,95 +main(21,126 + +cp-src/burton.cpp,124 +::dummy::dummy test::dummy1(dummy11,0 +::dummy::dummy test::dummy2(dummy26,64 +::dummy::dummy test::dummy3(dummy311,143 + +cp-src/functions.cpp,778 +void Date::setDate setDate5,148 +void Date::plus plus32,939 +void Date::minus minus42,1229 +void Date::shift shift52,1407 +Date & Date::operator = operator =62,1628 +Date & Date::operator += operator +=69,1789 +Date & Date::operator -= operator -=78,1939 +Date & Date::operator ++ operator ++87,2080 +Date & Date::operator -- operator --96,2216 +int Date::operator - operator -104,2331 +int Date::operator < operator <112,2483 +int Date::operator > operator >116,2557 +int Date::operator == operator ==120,2631 +ostream& operator << operator <<124,2707 +istream& operator >> operator >>133,2943 +bool isLeap 159,3543 +bool isHoliday 163,3629 +void asort(173,3865 +void ReadVacation 186,4064 +void Debug 201,4523 +int WorkingDays(211,4867 +Date StartDay(226,5129 + +cp-src/MDiagArray2.h,482 +#define octave_MDiagArray2_h 29,870 +#undef LTGT35,967 +#define LTGT39,1031 +#define LTGT 42,1051 +class MDiagArray2 78,2022 + MDiagArray2 82,2077 + MDiagArray2 86,2154 + MDiagArray2 87,2198 + MDiagArray2 88,2254 + MDiagArray2 89,2329 + MDiagArray2 90,2387 + MDiagArray2 91,2450 + ~MDiagArray2 93,2515 + MDiagArray2& operator = operator =95,2542 + operator MArray2 operator MArray2101,2667 +#undef LTGT144,3874 +#define INSTANTIATE_MDIAGARRAY_FRIENDS(146,3887 + +cp-src/Range.h,381 +#define octave_Range_h 24,765 +Range35,891 + Range 39,909 + Range 42,995 + Range 46,1130 + Range 50,1248 + double base 54,1376 + double limit 55,1425 + double inc 56,1475 + int nelem 57,1523 + void set_base 68,1728 + void set_limit 69,1774 + void set_inc 70,1821 + double rng_base;79,2023 + double rng_limit;80,2042 + double rng_inc;81,2062 + int rng_nelem;83,2081 + +cp-src/screen.cpp,228 +unsigned char cursor_x,15,548 +unsigned char cursor_x, cursor_y;15,548 +static union REGS regs;16,582 +void goto_xy(18,607 +void hide_cursor(27,774 +void cursor_position(32,836 +void clear_screen(41,997 +void write_xyc(55,1247 + +cp-src/screen.hpp,414 +#define __COLORS9,401 +enum COLORS 11,419 + BLACK,12,433 + BLUE,13,471 + GREEN,14,481 + CYAN,15,492 + RED,16,502 + MAGENTA,17,511 + BROWN,18,524 + LIGHTGRAY,19,535 + DARKGRAY,20,550 + LIGHTBLUE,21,589 + LIGHTGREEN,22,604 + LIGHTCYAN,23,620 + LIGHTRED,24,635 + LIGHTMAGENTA,25,649 + YELLOW,26,667 + WHITE27,679 +#define SCREEN_FP(31,700 +#define SCREEN_START 33,795 + +cp-src/conway.cpp,288 +#define max(12,357 +#define min(13,393 +const int num_rows 15,430 +const int num_columns 16,470 +class site *field_of_play[field_of_play18,499 +int site::total_surrounding(total_surrounding20,550 +void display(37,958 +void glider(50,1239 +void traffic_light(59,1478 +void main(67,1633 + +cp-src/conway.hpp,271 +class site:site5,235 + char x,7,269 + char x, y,7,269 + char x, y, alive,7,269 + char x, y, alive, next_alive;7,269 + site(10,344 + char read(12,410 + void set(13,444 + void clear(14,478 + void compute_next_state(15,514 + void step(22,717 + +cp-src/clheir.cpp,359 +const int max_num_generic_objects 9,298 +generic_object * object_registry[object_registry10,340 +void init_registry(12,400 +void step_everybody(19,527 +void discrete_location::clear_neighbors(clear_neighbors31,852 +generic_object::generic_object(generic_object36,981 +generic_object::~generic_object(~generic_object48,1255 +void agent::move(move53,1353 + +cp-src/clheir.hpp,682 +class generic_object13,520 + int where_in_registry;15,547 + virtual void compute_next_state(21,843 + virtual void step(22,889 +const int max_num_directions 31,1220 +class location:location33,1290 + location(43,1643 +class irregular_location:irregular_location47,1687 + double x,49,1735 + double x, y,49,1735 + double x, y, z;49,1735 + irregular_location(51,1763 +class discrete_location:discrete_location56,1890 + int x,58,1937 + int x, y,58,1937 + int x, y, z;58,1937 + class location *neighbors[neighbors59,1954 + discrete_location(62,2045 + void assign_neighbor(66,2185 +class agent:agent75,2509 + location *where;where77,2550 + +cp-src/fail.C,330 +struct A 7,263 + struct B 8,274 + struct C 9,289 + int x;10,305 + C(11,318 + operator int(operator int12,342 + typedef C T;14,389 + typedef B T2;16,414 +class A 23,453 + class B 24,463 + class C 25,474 + int f(26,488 +int A::B::f(f31,521 +main(37,571 + class D 41,622 + D(43,659 + int x;44,694 + +el-src/TAGTEST.EL,148 +(foo::defmumble bletch 1,0 +(defalias 'pending-delete-mode pending-delete-mode5,102 +(defalias (quote explicitly-quoted-pending-delete-mode)8,175 + +el-src/emacs/lisp/progmodes/etags.el,5069 +(defvar tags-file-name 34,1034 +(defgroup etags 43,1498 +(defcustom tags-case-fold-search 47,1566 +(defcustom tags-table-list 59,2051 +(defcustom tags-compression-info-list69,2449 +(defcustom tags-add-tables 88,3231 +(defcustom tags-revert-without-query 98,3627 +(defvar tags-table-computed-list 103,3778 +(defvar tags-table-computed-list-for 112,4262 +(defvar tags-table-list-pointer 117,4510 +(defvar tags-table-list-started-at 121,4701 +(defvar tags-table-set-list 124,4821 +(defcustom find-tag-hook 129,5000 +(defcustom find-tag-default-function 137,5263 +(define-obsolete-variable-alias 'find-tag-marker-ring-lengthfind-tag-marker-ring-length145,5602 +(defcustom tags-tag-face 148,5699 +(defcustom tags-apropos-verbose 154,5834 +(defcustom tags-apropos-additional-actions 160,5998 +(defvaralias 'find-tag-marker-ring find-tag-marker-ring183,6917 +(defvar default-tags-table-function 189,7097 +(defvar tags-location-ring 194,7323 +(defvar tags-table-files 201,7599 +(defvar tags-completion-table 206,7766 +(defvar tags-included-tables 209,7858 +(defvar next-file-list 212,7953 +(defvar tags-table-format-functions 217,8059 +(defvar file-of-tag-function 224,8440 +(defvar tags-table-files-function 228,8634 +(defvar tags-completion-table-function 230,8745 +(defvar snarf-tag-function 232,8840 +(defvar goto-tag-location-function 236,9049 +(defvar find-tag-regexp-search-function 239,9222 +(defvar find-tag-regexp-tag-order 241,9343 +(defvar find-tag-regexp-next-line-after-failure-p 243,9452 +(defvar find-tag-search-function 245,9572 +(defvar find-tag-tag-order 247,9679 +(defvar find-tag-next-line-after-failure-p 249,9774 +(defvar list-tags-function 251,9880 +(defvar tags-apropos-function 253,9968 +(defvar tags-included-tables-function 255,10062 +(defvar verify-tags-table-function 257,10181 +(defun initialize-new-tags-table 260,10292 +(defun tags-table-mode 276,10980 +(defun visit-tags-table 285,11245 +(defun tags-table-check-computed-list 321,12783 +(defun tags-table-extend-computed-list 360,14654 +(defun tags-expand-table-name 400,16367 +(defun tags-table-list-member 409,16710 +(defun tags-verify-table 421,17182 +(defun tags-table-including 470,19302 +(defun tags-next-table 522,21346 +(defun visit-tags-table-buffer 543,22203 +(defun tags-reset-tags-tables 712,28513 +(defun file-of-tag 731,29170 +(defun tags-table-files 740,29519 +(defun tags-included-tables 749,29869 +(defun tags-completion-table 755,30115 +(defun tags-lazy-completion-table 783,31309 +(defun tags-completion-at-point-function 799,31944 +(defun find-tag-tag 818,32694 +(defvar last-tag 837,33367 +(defun find-tag-interactive 840,33426 +(defvar find-tag-history 852,33841 +(defun find-tag-noselect 860,34011 +(defun find-tag 932,37125 +(defun find-tag-other-window 959,38341 +(defun find-tag-other-frame 1000,40269 +(defun find-tag-regexp 1025,41443 +(defalias 'pop-tag-mark pop-tag-mark1049,42605 +(defvar tag-lines-already-matched 1052,42656 +(defun find-tag-in-order 1055,42763 +(defun tag-find-file-of-tag-noselect 1167,47109 +(defun tag-find-file-of-tag 1200,48955 +(defun etags-recognize-tags-table 1208,49181 +(defun etags-verify-tags-table 1241,50812 +(defun etags-file-of-tag 1246,51010 +(defun etags-tags-completion-table 1256,51345 +(defun etags-snarf-tag 1286,52551 +(defun etags-goto-tag-location 1324,54120 +(defun etags-list-tags 1388,56563 +(defmacro tags-with-face 1423,57838 +(defun etags-tags-apropos-additional 1431,58171 +(defun etags-tags-apropos 1465,59408 +(defun etags-tags-table-files 1527,61617 +(defun etags-tags-included-tables 1542,62053 +(defun tags-recognize-empty-tags-table 1559,62593 +(defun tag-exact-file-name-match-p 1587,63739 +(defun tag-file-name-match-p 1596,64132 +(defun tag-exact-match-p 1609,64688 +(defun tag-implicit-name-match-p 1620,65256 +(defun tag-symbol-match-p 1633,65856 +(defun tag-word-match-p 1643,66292 +(defun tag-partial-file-name-match-p 1652,66690 +(defun tag-any-match-p 1662,67134 +(defun tag-re-match-p 1667,67318 +(defcustom tags-loop-revert-buffers 1675,67567 +(defun next-file 1685,67976 +(defvar tags-loop-operate 1760,70890 +(defvar tags-loop-scan1763,70984 +(defun tags-loop-eval 1771,71313 +(defun tags-loop-continue 1782,71642 +(defun tags-search 1850,73948 +(defun tags-query-replace 1871,74774 +(defun tags-complete-tags-table-file 1896,75998 +(defun list-tags 1906,76377 +(defun tags-apropos 1934,77330 +(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78156 +(defun select-tags-table 1964,78395 +(defvar select-tags-table-mode-map 2019,80522 +(define-derived-mode select-tags-table-mode 2030,80905 +(defun select-tags-table-select 2034,81089 +(defun select-tags-table-quit 2043,81455 +(defun complete-tag 2049,81610 +(defconst etags--xref-limit 2074,82551 +(defvar etags-xref-find-definitions-tag-order 2076,82586 +(defun etags-xref-find 2082,82876 +(defun etags--xref-find-definitions 2096,83405 +(defclass xref-etags-location 2129,85119 +(defun xref-make-etags-location 2135,85342 +(cl-defmethod xref-location-marker 2139,85497 +(cl-defmethod xref-location-line 2146,85741 + +erl-src/gs_dialog.erl,98 +-define(VERSION2,32 +behaviour_info(51,2177 +show(124,5458 +dialog_loop(219,9529 +test(252,10806 + +f-src/entry.for,172 + LOGICAL FUNCTION PRTPKG 3,75 + ENTRY SETPRT 194,3866 + ENTRY MSGSEL 395,8478 + & intensity1(577,12231 + character*(*) function foo(579,12307 + +f-src/entry.strange_suffix,172 + LOGICAL FUNCTION PRTPKG 3,75 + ENTRY SETPRT 194,3866 + ENTRY MSGSEL 395,8478 + & intensity1(577,12231 + character*(*) function foo(579,12307 + +f-src/entry.strange,172 + LOGICAL FUNCTION PRTPKG 3,75 + ENTRY SETPRT 194,3866 + ENTRY MSGSEL 395,8478 + & intensity1(577,12231 + character*(*) function foo(579,12307 + +forth-src/test-forth.fth,408 +: a-forth-word 20,301 +99 constant a-forth-constant!22,343 +55 value a-forth-value?23,373 +create :a-forth-dictionary-entry24,397 +defer #a-defer-word27,460 +: (another-forth-word)(another-forth-word29,481 + 9 field >field136,582 + 5 field >field237,605 +constant (a-forth-constant(a-forth-constant38,628 +2000 buffer: #some-storage41,657 +code assemby-code-word 43,685 +: a-forth-word 50,870 + +go-src/test.go,48 +package main1,0 +func say(5,28 +func main(9,72 + +go-src/test1.go,172 +package main1,0 +type plus 5,28 +type str 9,65 +type intNumber 13,99 +func (s str) PrintAdd(17,136 +func (n intNumber) PrintAdd(21,189 +func test(25,248 +func main(29,285 + +html-src/softwarelibero.html,200 +Cos'è il software libero?4,38 +Licenze d'uso di un programmalicenze65,2500 +Sfatiamo alcuni miti138,6118 +Il movimento open sourceoss191,8037 +Impatto pratico del software liberoimpatto231,10066 + +html-src/index.shtml,104 + 8,281 +In evidenza15,447 +Comunicati e iniziative32,976 +Ultime notizie dall'associazione63,2030 + +html-src/algrthms.html,467 +Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms7,277 +Descriptionalgorithms10,481 +Generating the Datagenalgorithm48,1995 +Convolutionallyconalgorithm55,2512 +Nextstatetable262,11587 +Outputoutputtable350,13915 +Mapping the Channel Symbolsmapping433,16213 +Adding Noise to theaddnoise439,16607 +Quantizing the Receivedquantizing469,19100 + +html-src/software.html,439 +Francesco Potortì Software Page9,280 +Software that I wrote for supporting my research activitysimulation36,1398 +MTGmtg41,1482 +Fracasfracas65,2624 +GaliLEOgalileo101,4232 +Leasqrleasqr114,4677 +Free software that I wrote for the GNU project or for my personal or workgnu142,6065 +Etagsetags148,6180 +checkiso161,6729 +cgrep178,7547 +debian-bug.eldebian-bug190,7979 +tcpdump205,8564 +Links to interesting softwarelinks216,8891 + +lua-src/allegro.lua,400 +local function get_layer_by_name 7,175 +local function count_layers 33,621 +function GetLayerByName 54,980 +function GetUniqueLayerName 65,1204 +function SelectLayer 76,1415 +function NewLayer 86,1773 +function NewLayerSet 144,3226 +function RemoveLayer 170,3750 +function MoveLayerTop 211,4767 +function MoveLayerBottom 223,5079 +function MoveLayerBefore 236,5457 +function MoveLayerAfter 258,6090 + +lua-src/test.lua,442 +function Rectangle.getPos 2,15 +function Rectangle.getPos getPos2,15 +function Circle.getPos 6,61 +function Circle.getPos getPos6,61 +function Cube.data.getFoo 10,102 +function Cube.data.getFoo getFoo10,102 +function Square.something:Bar 14,148 +function Square.something:Bar Bar14,148 + function test.me_22a(22,241 + function test.me_22a(me_22a22,241 + local function test.me22b 25,297 + local function test.me22b me22b25,297 + +make-src/Makefile,2175 +LATEST=1,0 +RELEASELIST=2,10 +ADASRC=4,104 +ASRC=5,171 +CSRC=6,197 +CPSRC=10,423 +ELSRC=13,614 +ERLSRC=14,661 +FORTHSRC=15,702 +FSRC=16,726 +HTMLSRC=17,776 +JAVASRC=18,844 +LUASRC=19,907 +MAKESRC=20,926 +OBJCSRC=21,943 +OBJCPPSRC=22,999 +PASSRC=23,1035 +PERLSRC=24,1053 +PHPSRC=25,1108 +PSSRC=26,1156 +PROLSRC=27,1173 +PYTSRC=28,1210 +TEXSRC=29,1227 +YSRC=30,1282 +SRCS=31,1325 +NONSRCS=35,1577 +VHDLFLAGS=37,1624 +COBOLFLAGS=38,1827 +POSTSCRIPTFLAGS=39,1889 +TCLFLAGS=40,1943 +GETOPTOBJS=42,2002 +RXINCLUDE=43,2034 +REGEXOBJS=44,2056 +CHECKOBJS=46,2075 +CHECKFLAGS=47,2105 +OBJS=48,2145 +CPPFLAGS=49,2190 +LDFLAGS=50,2259 +WARNINGS=51,2282 +CFLAGS=52,2466 +FASTCFLAGS=55,2530 +FASTCFLAGSWARN=56,2591 +FILTER=58,2641 +REGEX=59,2695 +xx=60,2741 +MAKE:MAKE62,2790 +RUN=63,2825 +RUN=64,2865 +OPTIONS=65,2870 +ARGS=66,2922 +infiles 68,2940 +quiettest:quiettest70,3002 +test:test79,3409 +${CHECKOBJS}:${CHECKOBJS}88,3805 +checker:checker90,3849 +standalone:standalone96,4062 +prof:prof101,4168 +fastetags:fastetags104,4198 +fastctags:fastctags108,4322 +staticetags:staticetags112,4446 +rsynctofly:rsynctofly116,4608 +rsyncfromfly:rsyncfromfly119,4698 +web ftp publish:web ftp publish122,4794 +release distrib:release distrib129,5115 +tags:tags134,5255 +clean:clean136,5267 +srclist:srclist139,5302 +regexfile:regexfile143,5391 +/home/www/pub/etags.c.gz:/home/www/pub/etags.c.gz149,5566 +/home/www/pub/software/unix/etags.tar.gz:/home/www/pub/software/unix/etags.tar.gz156,5825 +regex.o:regex.o159,6031 +getopt.o:getopt.o162,6086 +getopt1.o:getopt1.o165,6147 +etags:etags168,6210 +ctags:ctags171,6299 +man manpage:man manpage174,6396 +etags.1.man:etags.1.man176,6422 +maintaining.info:maintaining.info179,6475 +TAGS:TAGS182,6557 +%ediff:%ediff185,6587 +oediff:oediff188,6677 +%cdiff:%cdiff191,6764 +xdiff:xdiff194,6854 +ETAGS:ETAGS197,6942 +ETAGS%:ETAGS%200,7012 +ETAGS13 ETAGS14 ETAGS15:ETAGS13 ETAGS14 ETAGS15203,7084 +ETAGS12:ETAGS12206,7216 +OTAGS:OTAGS209,7304 +CTAGS:CTAGS212,7369 +CTAGS%:CTAGS%215,7443 +CTAGS13 CTAGS14 CTAGS15:CTAGS13 CTAGS14 CTAGS15218,7545 +EXTAGS:EXTAGS221,7680 +.PRECIOUS:.PRECIOUS224,7838 +FRC:FRC226,7894 + +objc-src/Subprocess.h,98 +#define Subprocess 41,1217 +#define BUFFERSIZE 43,1267 +@interface Subprocess:Subprocess45,1292 + +objc-src/Subprocess.m,446 +#define PTY_TEMPLATE 20,494 +#define PTY_LENGTH 21,528 +@interface Subprocess(Private)32,737 +- childDidExit39,851 +- fdHandler:fdHandler67,1589 +showError 98,2360 +fdHandler 112,2785 +getptys 119,2907 +- init:init183,4815 + andStdErr:init197,5147 +- send:(const char *)string withNewline:send300,7436 +- send:send308,7599 +- terminateInput314,7689 +- terminate:terminate321,7810 +- setDelegate:setDelegate332,7961 +- delegate338,8031 + +objc-src/PackInsp.h,109 +#define NUMSTATS 36,1101 +#define TYPESTOSTAT 37,1120 +@interface PackageInspector:PackageInspector39,1172 + +objc-src/PackInsp.m,1322 +static const char RCSid[RCSid30,1032 +#define VERSION 34,1116 +# define DEBUG 37,1155 +#define LISTCONTENTS 39,1181 +#define OPENBUTTON 47,1352 +#define LISTCONTENTSBUTTON 48,1449 +#define LISTDESCRIPTIONBUTTON 49,1562 +#define STATE_UNINSTALLED 52,1687 +#define STATE_INSTALLED 53,1807 +#define STATE_COMPRESSD 54,1948 +#define SIZEFORMAT 57,2152 +#define KBYTES 58,2362 +#define MBYTES 59,2473 +#define LOCALIZE(61,2585 +#define LOCALIZE_ARCH(62,2668 ++newnew67,2802 +-showInfo:showInfo93,3417 +-revert:revert107,3737 +-ok:ok136,4297 +-loadload143,4424 +#define LOOKUP(156,4826 +#undef LOOKUP176,5694 +-loadKeyValuesFrom:(const char *)type inTable:loadKeyValuesFrom186,5852 +-loadContentsOf:(const char *)type inTable:loadContentsOf238,7079 +-loadImageloadImage257,7552 +#define STAT_EQ(275,7940 +-(BOOL)shouldLoad280,8116 +-toggleDescriptiontoggleDescription301,8626 +-(const char *)getPath:(char *)buf forType:getPath317,8899 +-setRevertButtonTitlesetRevertButtonTitle333,9320 +-(const char *)formatSize:(const char *)size inBuf:formatSize344,9525 +#define WORKING 368,10045 +-(void)getArchs370,10100 +-(void)addArchs:addArchs385,10520 +-subprocess:(Subprocess *)sender output:subprocess428,11351 +-subprocessDone:subprocessDone436,11484 +static void openInWorkspace(446,11634 +-open:open464,12063 + +objcpp-src/SimpleCalc.H,41 +@interface SimpleCalc:SimpleCalc14,400 + +objcpp-src/SimpleCalc.M,445 +- init52,1747 +- appendToDisplay:appendToDisplay60,1933 +- registerAction:registerAction70,2210 +- decimalKey:decimalKey77,2348 +- numberKeys:numberKeys91,2661 +- equalsKey:equalsKey112,3192 +- operationKeys:operationKeys131,3680 +- clearKey:clearKey153,4301 +- clearAllKey:clearAllKey160,4410 +- appDidInit:appDidInit168,4591 +- windowWillClose:windowWillClose178,4882 +- infoPanel:infoPanel186,5132 +- helpPanel:helpPanel198,5482 + +pas-src/common.pas,1875 +procedure InitializeStringPackage;26,527 +function newtextstring;34,874 +procedure disposetextstring;52,1404 +function ConcatT;78,2066 +function AppendTextString;112,3238 +function CopyTextString;132,3947 +procedure CONVERT_CHARSTRING_TO_VALUE;151,4505 +procedure append_string;172,5166 +function To_Upper;186,5462 +function To_Lower;194,5617 +function EmptyNmStr(209,6213 +function chartonmstr;219,6436 +function LowerCaseNmStr;230,6682 +function concatenatenamestrings;242,7007 +procedure writenamestring;263,7517 +function IsControlChar;277,7928 +function namestringequal;283,8079 +function NameStringLess;302,8539 +function IsControlCharName(343,9710 +function SubString;358,10208 +function SkipChars;379,10791 +function RemoveUnderlineControl;397,11311 +procedure First100Chars;427,12162 +procedure SkipSpaces;462,13298 +function SkipBlanks;477,13782 +function stripname;505,14595 +function Locate;522,15039 +function NameHasChar;543,15581 +function integertonmstr;561,16134 +function NmStrToInteger;585,16901 +function AddNullToNmStr;600,17317 +function ValToNmStr;611,17585 +function ChangeFileType;625,18037 +function StripPath;647,18734 +function ReprOfChar;675,19343 +procedure ExtractCommentInfo;702,20749 +procedure INSERT_TREE_NODE;784,24053 +function GetNameList;920,27926 +procedure DisposeANameList(925,28010 +procedure DisposeNameList;938,28340 +function GetNewNameListNode;943,28409 +function insertname;972,29051 +procedure InitNameList;988,29471 +procedure InitNameStringPool;998,29767 +procedure NewNameString;1004,29867 +procedure ReleaseNameString;1022,30232 +procedure SDTrefStringToRec 1045,30741 +procedure SDTrefSkipSpaces;1059,31092 +function SDTrefIsEnd 1070,31323 +function SDTrefGetInteger 1082,31529 +procedure SDTrefRecToString 1303,37546 +function NmStrToErrStr;1497,42305 +function ErrStrToNmStr;1509,42557 +function GetTextRef;1529,43112 + +php-src/lce_functions.php,2864 + define("LCE_FUNCTIONS"LCE_FUNCTIONS4,38 + define("LCE_UNKNOWN"LCE_UNKNOWN9,145 + define("LCE_WS"LCE_WS11,194 + define("LCE_COMMENT"LCE_COMMENT13,244 + define("LCE_COMMENT_USER"LCE_COMMENT_USER15,303 + define("LCE_COMMENT_TOOL"LCE_COMMENT_TOOL17,366 + define("LCE_MSGID"LCE_MSGID19,430 + define("LCE_MSGSTR"LCE_MSGSTR21,488 + define("LCE_TEXT"LCE_TEXT23,541 + define("STATE_ABORT"STATE_ABORT25,567 + define("STATE_OK"STATE_OK26,595 + define("STATE_LOOP"STATE_LOOP27,620 + class POEntryAD 29,648 + function validate(31,683 + function checkQuotation(59,1384 + class CommentAD 70,1639 + var $prefix;72,1674 + function CommentAD(73,1693 + function validate(83,1944 + class POEntry 105,2410 + var $msgid;107,2454 + var $msgstr;108,2472 + var $user_comment;109,2491 + var $sys_comment;110,2516 + var $unk_comment;111,2540 + var $msgid_lc 113,2565 + var $msgstr_lc 114,2590 + var $user_comment_lc 115,2616 + var $sys_comment_lc 116,2648 + var $unk_comment_lc 117,2679 + function POEntry(119,2711 + function lineCount(135,3255 + function serializeToVars(141,3365 + function write(151,3800 + class POReader 163,4178 + var $msgid;165,4223 + var $msgstr;166,4241 + var $user_comment;167,4260 + var $sys_comment;168,4285 + var $unk_comment;169,4309 + var $state;170,4333 + var $ignore_ws;171,4351 + var $po_entries;172,4373 + var $poe_num;173,4396 + var $filename;174,4416 + var $domain;175,4437 + function gettext(177,4457 + function parseFromVars(189,4705 + function serializeToVars(215,5331 + function POReader(229,5613 + function read(243,5983 + function write(259,6307 + function isComment(277,6645 + function comment(284,6822 + function msgid(304,7247 + function msgstr(320,7574 + function start(340,8232 + function createPOEntries(360,8644 + function stripLine(394,9472 + function printClassification(421,10056 + function classifyLine(432,10301 + function getTextDomains(471,11094 + class PORManager 498,11756 + var $por_a;500,11803 + function PORManager(502,11822 + function addPOReader(507,11896 + function &getPOReader(getPOReader512,11992 + function getDomainNames(517,12081 + function &loadPORManager(loadPORManager523,12174 + function fileJoin(536,12436 + function lce_bindtextdomain(557,12839 + function lce_textdomain(614,14530 + function lce_gettext(620,14641 + function lce_dgettext(626,14767 + function lce(634,14966 + function lce_bindtextdomain(651,15488 + function lce_textdomain(656,15592 + function lce_gettext(661,15674 + function lce_dgettext(666,15755 + function lce(670,15855 + function lce_geteditcode(676,15898 + +php-src/ptest.php,135 +define("TEST"TEST1,0 +test 4,26 + var $member;8,71 + var $memassign=9,85 + var $memassign_space 10,110 + var $test12,176 +foo(16,200 + - perl-src/htlmify-cystic,1443 ++perl-src/htlmify-cystic,1197 +my @section_name;section_name12,236 +my @appendix_name;appendix_name13,254 +my @section_toc;section_toc15,274 +my @appendix_toc;appendix_toc16,291 +my $new_tag new_tag18,310 +my $appendix;appendix24,409 +my $section;section25,423 +my $subsection;subsection26,436 +my $subsubsection;subsubsection27,452 +my $this_file_toc this_file_toc29,472 +my %file_tocs;file_tocs30,496 +my @output_files output_files32,512 +my $file_index file_index33,535 +my $output_file;output_file35,556 +my $line;line37,574 +my $subsection_marker;subsection_marker161,3883 +my $new;new163,3907 - sub read_toc main::read_toc165,3917 ++sub read_toc 165,3917 + my $entry entry218,5621 + my $entry entry234,6077 + my $entry entry245,6351 + my $entry entry252,6536 + my $entry entry268,7010 + my $entry entry276,7204 + my $entry entry281,7328 + my $entry entry296,7698 - sub finish_subsubsections main::finish_subsubsections302,7805 - sub finish_subsections main::finish_subsections309,7987 - sub finish_sections main::finish_sections320,8310 - sub finish_appendices main::finish_appendices331,8599 - sub section_url_base main::section_url_base337,8724 - sub section_url_name main::section_url_name342,8922 - sub section_url main::section_url355,9284 ++sub finish_subsubsections 302,7805 ++sub finish_subsections 309,7987 ++sub finish_sections 320,8310 ++sub finish_appendices 331,8599 ++sub section_url_base 337,8724 ++sub section_url_name 342,8922 ++sub section_url 355,9284 + my $name name357,9336 - sub section_href main::section_href364,9452 - sub section_name main::section_name368,9551 - sub toc_line main::toc_line372,9655 - sub file_end main::file_end375,9750 ++sub section_href 364,9452 ++sub section_name 368,9551 ++sub toc_line 372,9655 ++sub file_end 375,9750 + - perl-src/yagrip.pl,258 - sub getopt main::getopt7,156 ++perl-src/yagrip.pl,233 ++sub getopt 7,156 + local($_,$flag,$opt,$f,$r,@temp)($_,$flag,$opt,$f,$r,@temp8,169 - sub usage main::usage38,856 ++sub usage 38,856 + local($prog,$_,@list)($prog,$_,@list39,868 + local($string,$flag,@string,@temp,@last)($string,$flag,@string,@temp,@last40,897 + - perl-src/kai-test.pl,244 - sub f1 main::f12,16 - sub main::f2 6,50 ++perl-src/kai-test.pl,203 ++sub f1 2,16 ++sub main::f2 f26,50 +package Foo;10,90 - sub f3 Foo::f312,104 - sub Bar::f4 16,138 ++sub f3 12,104 ++sub Bar::f4 f416,138 +package Bar;20,177 - sub f5 Bar::f522,191 ++sub f5 22,191 +package Foo::Bar;26,225 - sub f6 Foo::Bar::f628,244 ++sub f6 28,244 +package main;32,278 - sub f7 main::f734,293 ++sub f7 34,293 + +ps-src/rfc1245.ps,2478 +/FMversion 12,311 +/FrameDict 17,500 +/FMVERSION 47,1307 +/FMLOCAL 56,1494 +/FMDOCUMENT 73,1766 +/FMBEGINPAGE 95,2279 +/FMENDPAGE 109,2516 +/FMDEFINEFONT 115,2582 +/FMNORMALIZEGRAPHICS 126,2725 +/FMBEGINEPSF 142,2955 +/FMENDEPSF 153,3207 +/setmanualfeed 158,3283 +/max 163,3386 +/min 164,3426 +/inch 165,3466 +/pagedimen 166,3485 +/setpapername 172,3629 +/papersize 190,4214 +/manualpapersize 211,4789 +/desperatepapersize 230,5211 +/savematrix 239,5370 +/restorematrix 242,5425 +/dmatrix 245,5475 +/dpi 246,5495 +/freq 248,5583 +/sangle 249,5658 +/DiacriticEncoding 250,5717 +/.notdef 251,5738 +/.notdef 252,5801 +/.notdef 253,5864 +/.notdef 254,5927 +/.notdef 255,5990 +/numbersign 256,6051 +/parenright 257,6115 +/two 258,6184 +/less 259,6251 +/L 260,6320 +/bracketright 261,6389 +/i 262,6459 +/braceright 263,6529 +/Ntilde 264,6598 +/atilde 265,6668 +/iacute 266,6733 +/ocircumflex 267,6797 +/udieresis 268,6858 +/paragraph 269,6919 +/dieresis 270,6983 +/yen 271,7050 +/ordfeminine 272,7109 +/exclamdown 273,7171 +/guillemotleft 274,7230 +/Otilde 275,7296 +/quoteleft 276,7357 +/fraction 277,7420 +/periodcentered 278,7490 +/Acircumflex 279,7549 +/Icircumflex 280,7610 +/Uacute 281,7680 +/breve 282,7746 +/ReEncode 284,7814 +/graymode 300,8020 +/setpattern 310,8184 +/grayness 331,8725 +/normalize 394,9873 +/dnormalize 397,9942 +/lnormalize 400,10014 +/H 403,10104 +/Z 406,10147 +/X 409,10176 +/V 412,10219 +/N 415,10260 +/M 418,10286 +/E 419,10315 +/D 420,10336 +/O 421,10358 +/L 423,10394 +/Y 430,10489 +/R 439,10588 +/RR 450,10696 +/C 467,10959 +/U 473,11004 +/F 477,11039 +/T 481,11084 +/RF 484,11115 +/TF 488,11164 +/P 495,11219 +/PF 499,11270 +/S 506,11344 +/SF 510,11384 +/B 517,11446 +/BF 521,11505 +/W 538,11714 +/G 573,12382 +/A 582,12525 +/BEGINPRINTCODE 606,12918 +/ENDPRINTCODE 615,13131 +/gn 620,13259 +/cfs 631,13384 +/ic 636,13473 +/ms 658,14285 +/ip 668,14395 +/wh 678,14492 +/bl 684,14607 +/s1 690,14722 +/fl 691,14739 +/hx 698,14887 +/wbytes 709,15055 +/BEGINBITMAPBWc 713,15147 +/BEGINBITMAPGRAYc 716,15198 +/BEGINBITMAP2BITc 719,15251 +/COMMONBITMAPc 722,15304 +/BEGINBITMAPBW 739,15660 +/BEGINBITMAPGRAY 742,15709 +/BEGINBITMAP2BIT 745,15760 +/COMMONBITMAP 748,15811 +/Fmcc 765,16156 +/ngrayt 773,16371 +/nredt 774,16393 +/nbluet 775,16414 +/ngreent 776,16436 +/colorsetup 787,16603 +/fakecolorsetup 814,17370 +/BITMAPCOLOR 826,17636 +/BITMAPCOLORc 839,17926 +/BITMAPGRAY 855,18275 +/BITMAPGRAYc 858,18335 +/ENDBITMAP 861,18397 +/fillprocs 868,18497 + +prol-src/ordsets.prolog,525 +is_ordset(47,1310 +list_to_ord_set(63,1688 +ord_add_element(71,1867 +ord_del_element(85,2344 +ord_disjoint(100,2783 +ord_intersect(108,2953 +ord_intersection(126,3552 +ord_intersection3(130,3691 +ord_intersection(150,4531 +ord_intersection4(154,4703 +ord_intersection(176,5664 +ord_intersection2(181,5812 +ord_member(200,6318 +ord_seteq(216,6683 +ord_setproduct(225,6971 +ord_subset(240,7377 +ord_subtract(257,7861 +ord_symdiff(265,8054 +ord_union(288,8887 +ord_union4(303,9352 +ord_union(324,10171 +ord_union_all(329,10313 + +prol-src/natded.prolog,2319 +expandmng(100,2879 +normalize(116,3359 +fresh_vars(125,3716 +subst(138,4134 +normalize_fresh(159,4660 +reduce_subterm(171,5112 +reduce(185,5559 +free_var(196,5903 +free_for(209,6246 +compile_lex(231,6875 +consult_lex:-consult_lex248,7384 +lex(259,7754 +expandsyn(267,8068 +bas_syn(292,8897 +compile_empty:-compile_empty310,9376 +complete(328,10055 +add_active(340,10527 +parse(353,10949 +derived_analyses(364,11341 +build(378,11965 +buildact(392,12521 +mapsyn(412,13542 +add_edge(434,14278 +findcats(447,14758 +normalize_tree(465,15478 +normalize_trees(475,15856 +expandmng_tree(486,16248 +expandmng_trees(496,16614 +cat(511,17013 +subtree(644,21266 +hypothetical_mem(653,21565 +make_coor(667,22130 +start_up:-start_up688,23013 +tokenizeatom(710,23921 +tokenize(720,24348 +isoperator(752,25377 +isoptab(756,25431 +specialsymbol(765,25756 +sstab(771,25861 +parse_cgi(787,26347 +keyvalseq(792,26510 +andkeyvalseq(796,26609 +keyval(799,26688 +valseq(807,26920 +plusvalseq(810,27007 +val(816,27109 +argvals(824,27426 +commaargvals(828,27503 +atomval(833,27578 +atom(836,27640 +action(846,28004 +keyvalcgi(864,28649 +keyvalscgi(865,28670 +outsyn(868,28726 +act(876,29060 +actout(901,29906 +texttreelist(912,30089 +htmltreelist(918,30190 +fitchtreelist(924,30304 +pp_html_table_tree(938,30759 +pp_html_tree(949,31113 +pp_html_trees(988,32381 +pp_html_table_fitch_tree(999,32769 +pp_html_fitch_tree(1017,33672 +removeexp(1129,39002 +splitexp(1142,39490 +pp_exp(1155,39990 +map_word(1168,40249 +pp_exps(1180,40474 +pp_tree(1188,40777 +pp_trees(1216,41807 +pp_word_list(1225,42128 +pp_word(1231,42262 +pp_word_list_rest(1238,42569 +pp_cat(1248,42929 +pp_syn(1255,43196 +pp_syn_paren(1276,43899 +pp_paren(1293,44377 +pp_syn_back(1300,44661 +pp_bas_cat(1311,45001 +writecat(1322,45409 +writesubs(1351,46455 +writesups(1361,46757 +writelistsubs(1371,47090 +pp_lam(1380,47408 +pp_lam_bracket(1398,48022 +pp_lam_paren(1407,48338 +pp_rule(1429,49238 +member(1447,49866 +append_list(1451,49919 +append(1456,50010 +at_least_one_member(1460,50076 +numbervars(1464,50171 +reverse(1467,50209 +select(1471,50290 +select_last(1475,50357 +cat_atoms(1479,50436 +writelist(1485,50524 +write_lex_cat(1492,50676 +writebreaklex(1500,50988 +write_lex(1513,51265 +writebreak(1521,51541 +tt:-tt1531,51713 +mt:-mt1534,51784 +cmt:-cmt1537,51878 + +pyt-src/server.py,1438 +class Controls:Controls17,358 + def __init__(18,374 + def __repr__(24,590 + def __str__(34,871 +class Server:Server37,934 + def __init__(38,948 + def dump(73,2198 + def __repr__(125,3896 + def __str__(128,3945 +class User:User131,4014 + def __init__(132,4026 + def __repr__(172,5445 + def __str__(206,6883 +def flag2str(223,7212 +class LabeledEntry(232,7442 + def bind(234,7525 + def focus_set(236,7584 + def __init__(238,7629 +def ButtonBar(245,7909 +def helpwin(255,8280 +class ListEdit(267,8707 + def __init__(269,8808 + def handleList(303,10042 + def handleNew(306,10094 + def editItem(314,10426 + def deleteItem(320,10596 +def ConfirmQuit(326,10760 +class ControlEdit(375,12377 + def PostControls(376,12403 + def GatherControls(421,13530 +class ServerEdit(512,16264 + def __init__(513,16289 + def post(525,16629 + def gather(543,17191 + def nosave(547,17304 + def save(551,17408 + def refreshPort(556,17509 + def createWidgets(561,17663 + def edituser(631,20708 +class UserEdit(645,20921 + def __init__(646,20944 + def post(658,21283 + def gather(676,21841 + def nosave(680,21950 + def save(684,22052 + def createWidgets(689,22151 +class Configure(760,24879 + def __init__(761,24916 + def MakeDispose(772,25211 + def MakeSitelist(786,25706 + def editsite(794,25949 + def save(797,26022 + def nosave(807,26310 + +ruby-src/test.rb,637 +module ModuleExample1,0 + class ClassExample2,21 + def instance_method3,44 + def ClassExample.class_methodclass_method6,121 + def instance_method_exclamation!9,206 + def instance_method_question?12,310 + def instance_method_equals=instance_method_equals=15,408 + def `(18,502 + def +(21,592 + def [](24,640 + def []=([]=27,690 + def <<(30,752 + def ==(==33,802 + def <=(<=36,872 + def <=>(<=>39,943 + def ===(===42,990 + def module_instance_method46,1051 + def ModuleExample.module_class_methodmodule_class_method49,1131 + +ruby-src/test1.ru,935 +class A1,0 + def a(2,8 + def b(5,38 +module A9,57 + class B10,66 + ABC 11,76 + Def_ 12,88 + Xyzzy 13,106 + def foo!15,121 + def self._bar?(_bar?18,143 + def qux=(qux=22,194 + attr_reader :foofoo26,233 + attr_reader :read1 read127,254 + attr_reader :read1 , :read2;read227,254 + attr_reader :read1 , :read2; attr_writer :write1,write1=27,254 + attr_reader :read1 , :read2; attr_writer :write1, :write2write2=27,254 + attr_writer :bar,bar=28,316 + :baz,baz=29,338 + :moremore=30,360 + attr_accessor :teetee31,382 + attr_accessor :teetee=31,382 + alias_method :qux,qux32,405 + alias_method :xyz,xyz33,456 + :tee ; attr_reader :subtlesubtle34,479 + attr_reader(:foo1,foo135,523 + attr_reader(:foo1, :bar1,bar135,523 + :qux1)qux136,563 + alias_method ( :foo2,foo237,586 +A::Constant Constant42,655 + +tex-src/testenv.tex,52 +\newcommand{\nm}\nm4,77 +\section{blah}blah8,139 + +tex-src/gzip.texi,303 +@node Top,62,2139 +@node Copying,80,2652 +@node Overview,83,2705 +@node Sample,166,7272 +@node Invoking gzip,Invoking gzip210,8828 +@node Advanced usage,Advanced usage357,13495 +@node Environment,420,15207 +@node Tapes,437,15768 +@node Problems,460,16767 +@node Concept Index,Concept Index473,17287 + +tex-src/texinfo.tex,30627 +\def\texinfoversion{\texinfoversion26,1027 +\def\tie{\tie49,1518 +\def\gloggingall{\gloggingall72,2268 +\def\loggingall{\loggingall73,2337 +\def\onepageout#1{\onepageout99,3274 +\def\croppageout#1{\croppageout115,4024 +\def\cropmarks{\cropmarks142,5084 +\def\pagebody#1{\pagebody144,5131 +\def\ewtop{\ewtop157,5586 +\def\nstop{\nstop158,5650 +\def\ewbot{\ewbot160,5733 +\def\nsbot{\nsbot161,5797 +\def\parsearg #1{\parsearg170,6096 +\def\parseargx{\parseargx172,6174 +\def\parseargline{\parseargline182,6414 +\def\flushcr{\flushcr186,6535 +\newif\ifENV \ENVfalse \def\inENV{\inENV190,6734 +\def\ENVcheck{\ENVcheck191,6798 +\outer\def\begin{\begin198,7045 +\def\beginxxx #1{\beginxxx200,7083 +\def\end{\end208,7338 +\def\endxxx #1{\endxxx210,7366 +\def\errorE#1{\errorE216,7555 +\def\singlespace{\singlespace222,7749 +\def\@{\@232,7972 +\def\`{\`236,8072 +\def\'{\'237,8084 +\def\mylbrace {\mylbrace241,8132 +\def\myrbrace {\myrbrace242,8165 +\def\:{\:247,8279 +\def\*{\*250,8333 +\def\.{\.253,8409 +\def\w#1{\w258,8640 +\def\group{\group268,9123 + \def\Egroup{\Egroup273,9287 +\def\need{\need289,9729 +\def\needx#1{\needx300,10006 +\def\dots{\dots339,11392 +\def\page{\page343,11456 +\def\exdent{\exdent353,11783 +\def\exdentyyy #1{\exdentyyy354,11816 +\def\nofillexdent{\nofillexdent357,11960 +\def\nofillexdentyyy #1{\nofillexdentyyy358,12005 +\def\include{\include365,12189 +\def\includezzz #1{\includezzz366,12224 +\def\thisfile{\thisfile369,12275 +\def\center{\center373,12338 +\def\centerzzz #1{\centerzzz374,12371 +\def\sp{\sp380,12513 +\def\spxxx #1{\spxxx381,12538 +\def\comment{\comment387,12712 +\def\commentxxx #1{\commentxxx390,12809 +\def\ignoresections{\ignoresections396,12978 +\let\chapter=\relax=\relax397,13000 +\let\section=\relax=\relax406,13245 +\let\subsection=\relax=\relax409,13306 +\let\subsubsection=\relax=\relax410,13329 +\let\appendix=\relax=\relax411,13355 +\let\appendixsec=\relaxsec=\relax412,13376 +\let\appendixsection=\relaxsection=\relax413,13400 +\let\appendixsubsec=\relaxsubsec=\relax414,13428 +\let\appendixsubsection=\relaxsubsection=\relax415,13455 +\let\appendixsubsubsec=\relaxsubsubsec=\relax416,13486 +\let\appendixsubsubsection=\relaxsubsubsection=\relax417,13516 +\def\ignore{\ignore423,13618 +\long\def\ignorexxx #1\end ignore{\ignorexxx427,13758 +\def\direntry{\direntry429,13817 +\long\def\direntryxxx #1\end direntry{\direntryxxx430,13856 +\def\ifset{\ifset434,13966 +\def\ifsetxxx #1{\ifsetxxx436,14024 +\def\Eifset{\Eifset440,14151 +\def\ifsetfail{\ifsetfail441,14165 +\long\def\ifsetfailxxx #1\end ifset{\ifsetfailxxx442,14221 +\def\ifclear{\ifclear444,14282 +\def\ifclearxxx #1{\ifclearxxx446,14344 +\def\Eifclear{\Eifclear450,14475 +\def\ifclearfail{\ifclearfail451,14491 +\long\def\ifclearfailxxx #1\end ifclear{\ifclearfailxxx452,14551 +\def\set{\set456,14702 +\def\setxxx #1{\setxxx457,14729 +\def\clear{\clear460,14791 +\def\clearxxx #1{\clearxxx461,14822 +\def\iftex{\iftex466,14939 +\def\Eiftex{\Eiftex467,14952 +\def\ifinfo{\ifinfo468,14966 +\long\def\ifinfoxxx #1\end ifinfo{\ifinfoxxx469,15016 +\long\def\menu #1\end menu{\menu471,15075 +\def\asis#1{\asis472,15104 +\def\math#1{\math485,15647 +\def\node{\node487,15691 +\def\nodezzz#1{\nodezzz488,15729 +\def\nodexxx[#1,#2]{\nodexxx[489,15760 +\def\donoderef{\donoderef492,15822 +\def\unnumbnoderef{\unnumbnoderef496,15943 +\def\appendixnoderef{\appendixnoderef500,16074 +\expandafter\expandafter\expandafter\appendixsetref{setref501,16120 +\let\refill=\relaxill=\relax504,16209 +\def\setfilename{\setfilename509,16423 +\outer\def\bye{\bye518,16669 +\def\inforef #1{\inforef520,16725 +\def\inforefzzz #1,#2,#3,#4**{\inforefzzz521,16763 +\def\losespace #1{\losespace523,16860 +\def\sf{\sf532,17064 +\font\defbf=cmbx10 scaled \magstep1 %was 1314bf=cmbx10558,17859 +\font\deftt=cmtt10 scaled \magstep1tt=cmtt10559,17905 +\def\df{\df560,17941 +\def\resetmathfonts{\resetmathfonts635,20535 +\def\textfonts{\textfonts648,21124 +\def\chapfonts{\chapfonts653,21339 +\def\secfonts{\secfonts658,21555 +\def\subsecfonts{\subsecfonts663,21760 +\def\indexfonts{\indexfonts668,21977 +\def\smartitalicx{\smartitalicx691,22709 +\def\smartitalic#1{\smartitalic692,22785 +\let\cite=\smartitalic=\smartitalic698,22930 +\def\b#1{\b700,22954 +\def\t#1{\t703,22989 +\def\samp #1{\samp706,23141 +\def\key #1{\key707,23174 +\def\ctrl #1{\ctrl708,23235 +\def\tclose#1{\tclose716,23437 +\def\ {\720,23603 +\def\xkey{\xkey728,23872 +\def\kbdfoo#1#2#3\par{\kbdfoo729,23888 +\def\dmn#1{\dmn738,24189 +\def\kbd#1{\kbd740,24216 +\def\l#1{\l742,24273 +\def\r#1{\r744,24302 +\def\sc#1{\sc746,24370 +\def\ii#1{\ii747,24413 +\def\titlefont#1{\titlefont755,24646 +\def\titlepage{\titlepage761,24749 + \def\subtitlefont{\subtitlefont766,24976 + \def\authorfont{\authorfont768,25060 + \def\title{\title774,25270 + \def\titlezzz##1{\titlezzz775,25305 + \def\subtitle{\subtitle783,25620 + \def\subtitlezzz##1{\subtitlezzz784,25661 + \def\author{\author787,25779 + \def\authorzzz##1{\authorzzz788,25816 + \def\page{\page794,26107 +\def\Etitlepage{\Etitlepage804,26276 +\def\finishtitlepage{\finishtitlepage817,26664 +\def\evenheading{\evenheading846,27672 +\def\oddheading{\oddheading847,27715 +\def\everyheading{\everyheading848,27756 +\def\evenfooting{\evenfooting850,27802 +\def\oddfooting{\oddfooting851,27845 +\def\everyfooting{\everyfooting852,27886 +\def\headings #1 {\headings893,29578 +\def\HEADINGSoff{\HEADINGSoff895,29627 +\def\HEADINGSdouble{\HEADINGSdouble904,30054 +\def\HEADINGSsingle{\HEADINGSsingle914,30374 +\def\HEADINGSon{\HEADINGSon922,30595 +\def\HEADINGSafter{\HEADINGSafter924,30629 +\def\HEADINGSdoublex{\HEADINGSdoublex926,30724 +\def\HEADINGSsingleafter{\HEADINGSsingleafter933,30912 +\def\HEADINGSsinglex{\HEADINGSsinglex934,30973 +\def\today{\today943,31248 +\def\thistitle{\thistitle958,31793 +\def\settitle{\settitle959,31818 +\def\settitlezzz #1{\settitlezzz960,31855 +\def\internalBitem{\internalBitem992,32785 +\def\internalBitemx{\internalBitemx993,32835 +\def\internalBxitem "#1"{\internalBxitem995,32880 +\def\internalBxitemx "#1"{\internalBxitemx996,32960 +\def\internalBkitem{\internalBkitem998,33035 +\def\internalBkitemx{\internalBkitemx999,33087 +\def\kitemzzz #1{\kitemzzz1001,33134 +\def\xitemzzz #1{\xitemzzz1004,33236 +\def\itemzzz #1{\itemzzz1007,33339 +\def\item{\item1037,34410 +\def\itemx{\itemx1038,34461 +\def\kitem{\kitem1039,34514 +\def\kitemx{\kitemx1040,34567 +\def\xitem{\xitem1041,34622 +\def\xitemx{\xitemx1042,34675 +\def\description{\description1045,34785 +\def\table{\table1047,34835 +\def\ftable{\ftable1052,34979 +\def\Eftable{\Eftable1056,35125 +\def\vtable{\vtable1059,35194 +\def\Evtable{\Evtable1063,35340 +\def\dontindex #1{\dontindex1066,35409 +\def\fnitemindex #1{\fnitemindex1067,35429 +\def\vritemindex #1{\vritemindex1068,35474 +\def\tablez #1#2#3#4#5#6{\tablez1074,35623 +\def\Edescription{\Edescription1077,35681 +\def\itemfont{\itemfont1082,35883 +\def\Etable{\Etable1090,36109 +\def\itemize{\itemize1103,36433 +\def\itemizezzz #1{\itemizezzz1105,36469 +\def\itemizey #1#2{\itemizey1110,36564 +\def#2{1119,36810 +\def\itemcontents{\itemcontents1120,36851 +\def\bullet{\bullet1123,36899 +\def\minus{\minus1124,36926 +\def\frenchspacing{\frenchspacing1128,37034 +\def\splitoff#1#2\endmark{\splitoff1134,37259 +\def\enumerate{\enumerate1140,37489 +\def\enumeratezzz #1{\enumeratezzz1141,37528 +\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37581 + \def\thearg{\thearg1146,37728 + \ifx\thearg\empty \def\thearg{\thearg1147,37747 +\def\numericenumerate{\numericenumerate1184,39081 +\def\lowercaseenumerate{\lowercaseenumerate1190,39211 +\def\uppercaseenumerate{\uppercaseenumerate1203,39558 +\def\startenumeration#1{\startenumeration1219,40048 +\def\alphaenumerate{\alphaenumerate1227,40230 +\def\capsenumerate{\capsenumerate1228,40265 +\def\Ealphaenumerate{\Ealphaenumerate1229,40299 +\def\Ecapsenumerate{\Ecapsenumerate1230,40333 +\def\itemizeitem{\itemizeitem1234,40413 +\def\newindex #1{\newindex1259,41270 +\def\defindex{\defindex1268,41559 +\def\newcodeindex #1{\newcodeindex1272,41667 +\def\defcodeindex{\defcodeindex1279,41927 +\def\synindex #1 #2 {\synindex1283,42107 +\def\syncodeindex #1 #2 {\syncodeindex1292,42447 +\def\doindex#1{\doindex1309,43126 +\def\singleindexer #1{\singleindexer1310,43185 +\def\docodeindex#1{\docodeindex1313,43297 +\def\singlecodeindexer #1{\singlecodeindexer1314,43364 +\def\indexdummies{\indexdummies1316,43422 +\def\_{\_1317,43442 +\def\w{\w1318,43470 +\def\bf{\bf1319,43497 +\def\rm{\rm1320,43526 +\def\sl{\sl1321,43555 +\def\sf{\sf1322,43584 +\def\tt{\tt1323,43612 +\def\gtr{\gtr1324,43640 +\def\less{\less1325,43670 +\def\hat{\hat1326,43702 +\def\char{\char1327,43732 +\def\TeX{\TeX1328,43764 +\def\dots{\dots1329,43794 +\def\copyright{\copyright1330,43827 +\def\tclose##1{\tclose1331,43870 +\def\code##1{\code1332,43915 +\def\samp##1{\samp1333,43956 +\def\t##1{\t1334,43997 +\def\r##1{\r1335,44032 +\def\i##1{\i1336,44067 +\def\b##1{\b1337,44102 +\def\cite##1{\cite1338,44137 +\def\key##1{\key1339,44178 +\def\file##1{\file1340,44217 +\def\var##1{\var1341,44258 +\def\kbd##1{\kbd1342,44297 +\def\indexdummyfont#1{\indexdummyfont1347,44453 +\def\indexdummytex{\indexdummytex1348,44479 +\def\indexdummydots{\indexdummydots1349,44503 +\def\indexnofonts{\indexnofonts1351,44529 +\let\w=\indexdummyfontdummyfont1352,44549 +\let\t=\indexdummyfontdummyfont1353,44572 +\let\r=\indexdummyfontdummyfont1354,44595 +\let\i=\indexdummyfontdummyfont1355,44618 +\let\b=\indexdummyfontdummyfont1356,44641 +\let\emph=\indexdummyfontdummyfont1357,44664 +\let\strong=\indexdummyfontdummyfont1358,44690 +\let\cite=\indexdummyfont=\indexdummyfont1359,44718 +\let\sc=\indexdummyfontdummyfont1360,44744 +\let\tclose=\indexdummyfontdummyfont1364,44916 +\let\code=\indexdummyfontdummyfont1365,44944 +\let\file=\indexdummyfontdummyfont1366,44970 +\let\samp=\indexdummyfontdummyfont1367,44996 +\let\kbd=\indexdummyfontdummyfont1368,45022 +\let\key=\indexdummyfontdummyfont1369,45047 +\let\var=\indexdummyfontdummyfont1370,45072 +\let\TeX=\indexdummytexdummytex1371,45097 +\let\dots=\indexdummydotsdummydots1372,45121 +\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45373 +\def\doind #1#2{\doind1384,45429 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45472 +\def\rawbackslashxx{\rawbackslashxx1389,45612 +{\indexnofontsnofonts1394,45874 +\def\dosubind #1#2#3{\dosubind1405,46185 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46233 +\def\rawbackslashxx{\rawbackslashxx1410,46337 +{\indexnofontsnofonts1414,46491 +\def\findex {\findex1443,47422 +\def\kindex {\kindex1444,47445 +\def\cindex {\cindex1445,47468 +\def\vindex {\vindex1446,47491 +\def\tindex {\tindex1447,47514 +\def\pindex {\pindex1448,47537 +\def\cindexsub {\cindexsub1450,47561 +\def\printindex{\printindex1462,47888 +\def\doprintindex#1{\doprintindex1464,47929 + \def\indexbackslash{\indexbackslash1481,48414 + \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48453 +\def\initial #1{\initial1517,49525 +\def\entry #1#2{\entry1523,49732 + \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50379 +\def\indexdotfill{\indexdotfill1549,50707 +\def\primary #1{\primary1552,50813 +\def\secondary #1#2{\secondary1556,50895 +\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50977 +\newbox\partialpageialpage1566,51150 +\def\begindoublecolumns{\begindoublecolumns1572,51308 + \output={\global\setbox\partialpage=ialpage=1573,51344 +\def\enddoublecolumns{\enddoublecolumns1577,51532 +\def\doublecolumnout{\doublecolumnout1580,51617 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51686 +\def\pagesofar{\pagesofar1584,51864 +\def\balancecolumns{\balancecolumns1588,52101 + \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52272 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52533 +\newcount \appendixno \appendixno = `\@no1627,53438 +\def\appendixletter{\appendixletter1628,53479 +\def\opencontents{\opencontents1632,53582 +\def\thischapter{\thischapter1637,53763 +\def\seccheck#1{\seccheck1638,53801 +\def\chapternofonts{\chapternofonts1643,53905 +\def\result{\result1646,53980 +\def\equiv{\equiv1647,54015 +\def\expansion{\expansion1648,54048 +\def\print{\print1649,54089 +\def\TeX{\TeX1650,54122 +\def\dots{\dots1651,54151 +\def\copyright{\copyright1652,54182 +\def\tt{\tt1653,54223 +\def\bf{\bf1654,54250 +\def\w{\w1655,54278 +\def\less{\less1656,54303 +\def\gtr{\gtr1657,54334 +\def\hat{\hat1658,54363 +\def\char{\char1659,54392 +\def\tclose##1{\tclose1660,54423 +\def\code##1{\code1661,54467 +\def\samp##1{\samp1662,54507 +\def\r##1{\r1663,54547 +\def\b##1{\b1664,54581 +\def\key##1{\key1665,54615 +\def\file##1{\file1666,54653 +\def\kbd##1{\kbd1667,54693 +\def\i##1{\i1669,54801 +\def\cite##1{\cite1670,54835 +\def\var##1{\var1671,54875 +\def\emph##1{\emph1672,54913 +\def\dfn##1{\dfn1673,54953 +\def\thischaptername{\thischaptername1676,54994 +\outer\def\chapter{\chapter1677,55033 +\def\chapterzzz #1{\chapterzzz1678,55074 +{\chapternofonts%nofonts%1687,55470 +\global\let\section = \numberedsec=1692,55623 +\global\let\subsection = \numberedsubsec=1693,55658 +\global\let\subsubsection = \numberedsubsubsec=1694,55699 +\outer\def\appendix{\appendix1697,55750 +\def\appendixzzz #1{\appendixzzz1698,55793 +\global\advance \appendixno by 1 \message{no1700,55870 +\chapmacro {#1}{Appendix \appendixletter}letter1701,55939 +\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56032 +{\chapternofonts%nofonts%1705,56104 + {#1}{Appendix \appendixletter}letter1707,56160 +\appendixnoderef %noderef1710,56260 +\global\let\section = \appendixsec=1711,56279 +\global\let\subsection = \appendixsubsec=1712,56314 +\global\let\subsubsection = \appendixsubsubsec=1713,56355 +\outer\def\top{\top1716,56406 +\outer\def\unnumbered{\unnumbered1717,56446 +\def\unnumberedzzz #1{\unnumberedzzz1718,56493 +{\chapternofonts%nofonts%1722,56656 +\global\let\section = \unnumberedsec=1727,56806 +\global\let\subsection = \unnumberedsubsec=1728,56843 +\global\let\subsubsection = \unnumberedsubsubsec=1729,56886 +\outer\def\numberedsec{\numberedsec1732,56939 +\def\seczzz #1{\seczzz1733,56980 +{\chapternofonts%nofonts%1736,57136 +\outer\def\appendixsection{\appendixsection1745,57322 +\outer\def\appendixsec{\appendixsec1746,57379 +\def\appendixsectionzzz #1{\appendixsectionzzz1747,57432 +\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57544 +{\chapternofonts%nofonts%1750,57612 +{#1}{\appendixletter}letter1752,57668 +\appendixnoderef %noderef1755,57768 +\outer\def\unnumberedsec{\unnumberedsec1759,57808 +\def\unnumberedseczzz #1{\unnumberedseczzz1760,57861 +{\chapternofonts%nofonts%1762,57956 +\outer\def\numberedsubsec{\numberedsubsec1770,58124 +\def\numberedsubseczzz #1{\numberedsubseczzz1771,58179 +{\chapternofonts%nofonts%1774,58358 +\outer\def\appendixsubsec{\appendixsubsec1783,58562 +\def\appendixsubseczzz #1{\appendixsubseczzz1784,58617 +\subsecheading {#1}{\appendixletter}letter1786,58739 +{\chapternofonts%nofonts%1787,58804 +{#1}{\appendixletter}letter1789,58863 +\appendixnoderef %noderef1792,58978 +\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59018 +\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59077 +{\chapternofonts%nofonts%1799,59178 +\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59349 +\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59410 +{\chapternofonts%nofonts%1812,59607 +\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59840 +\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59901 + {\appendixletter}letter1827,60040 +{\chapternofonts%nofonts%1828,60106 + {\appendixletter}letter1830,60171 +\appendixnoderef %noderef1834,60305 +\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60345 +\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60410 +{\chapternofonts%nofonts%1841,60517 +\def\infotop{\infotop1851,60846 +\def\infounnumbered{\infounnumbered1852,60884 +\def\infounnumberedsec{\infounnumberedsec1853,60929 +\def\infounnumberedsubsec{\infounnumberedsubsec1854,60980 +\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61037 +\def\infoappendix{\infoappendix1857,61101 +\def\infoappendixsec{\infoappendixsec1858,61142 +\def\infoappendixsubsec{\infoappendixsubsec1859,61189 +\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61242 +\def\infochapter{\infochapter1862,61302 +\def\infosection{\infosection1863,61341 +\def\infosubsection{\infosubsection1864,61380 +\def\infosubsubsection{\infosubsubsection1865,61425 +\global\let\section = \numberedsec=1870,61662 +\global\let\subsection = \numberedsubsec=1871,61697 +\global\let\subsubsection = \numberedsubsubsec=1872,61738 +\def\majorheading{\majorheading1886,62245 +\def\majorheadingzzz #1{\majorheadingzzz1887,62290 +\def\chapheading{\chapheading1893,62523 +\def\chapheadingzzz #1{\chapheadingzzz1894,62566 +\def\heading{\heading1899,62761 +\def\subheading{\subheading1901,62798 +\def\subsubheading{\subsubheading1903,62841 +\def\dobreak#1#2{\dobreak1910,63118 +\def\setchapterstyle #1 {\setchapterstyle1912,63196 +\def\chapbreak{\chapbreak1919,63451 +\def\chappager{\chappager1920,63501 +\def\chapoddpage{\chapoddpage1921,63539 +\def\setchapternewpage #1 {\setchapternewpage1923,63618 +\def\CHAPPAGoff{\CHAPPAGoff1925,63675 +\def\CHAPPAGon{\CHAPPAGon1929,63769 +\global\def\HEADINGSon{\HEADINGSon1932,63860 +\def\CHAPPAGodd{\CHAPPAGodd1934,63902 +\global\def\HEADINGSon{\HEADINGSon1937,63998 +\def\CHAPFplain{\CHAPFplain1941,64052 +\def\chfplain #1#2{\chfplain1945,64144 +\def\unnchfplain #1{\unnchfplain1956,64367 +\def\unnchfopen #1{\unnchfopen1964,64596 +\def\chfopen #1#2{\chfopen1970,64804 +\def\CHAPFopen{\CHAPFopen1975,64948 +\def\subsecheadingbreak{\subsecheadingbreak1982,65166 +\def\secheadingbreak{\secheadingbreak1985,65295 +\def\secheading #1#2#3{\secheading1993,65577 +\def\plainsecheading #1{\plainsecheading1994,65633 +\def\secheadingi #1{\secheadingi1995,65676 +\def\subsecheading #1#2#3#4{\subsecheading2006,66044 +\def\subsecheadingi #1{\subsecheadingi2007,66111 +\def\subsubsecfonts{\subsubsecfonts2014,66408 +\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66531 +\def\subsubsecheadingi #1{\subsubsecheadingi2018,66609 +\def\startcontents#1{\startcontents2032,67081 + \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67354 +\outer\def\contents{\contents2049,67713 +\outer\def\summarycontents{\summarycontents2057,67857 + \def\secentry ##1##2##3##4{\secentry2067,68228 + \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68263 + \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68298 + \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68339 + \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68377 + \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68424 +\def\chapentry#1#2#3{\chapentry2085,68858 +\def\shortchapentry#1#2#3{\shortchapentry2088,68975 + {#2\labelspace #1}space2091,69085 +\def\unnumbchapentry#1#2{\unnumbchapentry2094,69139 +\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69186 +\def\secentry#1#2#3#4{\secentry2102,69350 +\def\unnumbsecentry#1#2{\unnumbsecentry2103,69409 +\def\subsecentry#1#2#3#4#5{\subsecentry2106,69470 +\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69540 +\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69614 + \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69648 +\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69699 +\def\dochapentry#1#2{\dochapentry2123,70073 +\def\dosecentry#1#2{\dosecentry2138,70678 +\def\dosubsecentry#1#2{\dosubsecentry2145,70856 +\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71041 +\def\labelspace{\labelspace2160,71292 +\def\dopageno#1{\dopageno2162,71327 +\def\doshortpageno#1{\doshortpageno2163,71353 +\def\chapentryfonts{\chapentryfonts2165,71385 +\def\secentryfonts{\secentryfonts2166,71420 +\def\point{\point2192,72379 +\def\result{\result2194,72400 +\def\expansion{\expansion2195,72473 +\def\print{\print2196,72544 +\def\equiv{\equiv2198,72611 +\def\error{\error2218,73384 +\def\tex{\tex2224,73613 +\def\@{\@2242,73996 +\gdef\sepspaces{\def {\ }}}\2265,74728 +\def\aboveenvbreak{\aboveenvbreak2268,74810 +\def\afterenvbreak{\afterenvbreak2272,74976 +\def\ctl{\ctl2286,75487 +\def\ctr{\ctr2287,75559 +\def\cbl{\cbl2288,75598 +\def\cbr{\cbr2289,75638 +\def\carttop{\carttop2290,75677 +\def\cartbot{\cartbot2293,75785 +\long\def\cartouche{\cartouche2299,75925 +\def\Ecartouche{\Ecartouche2326,76713 +\def\lisp{\lisp2338,76848 +\def\Elisp{\Elisp2348,77195 +\def\next##1{\next2360,77521 +\def\Eexample{\Eexample2364,77563 +\def\Esmallexample{\Esmallexample2367,77610 +\def\smalllispx{\smalllispx2373,77788 +\def\Esmalllisp{\Esmalllisp2383,78142 +\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78498 +\def\next##1{\next2397,78555 +\def\display{\display2401,78635 +\def\Edisplay{\Edisplay2410,78954 +\def\next##1{\next2422,79265 +\def\format{\format2426,79368 +\def\Eformat{\Eformat2434,79664 +\def\next##1{\next2437,79753 +\def\flushleft{\flushleft2441,79805 +\def\Eflushleft{\Eflushleft2451,80176 +\def\next##1{\next2454,80269 +\def\flushright{\flushright2456,80291 +\def\Eflushright{\Eflushright2466,80663 +\def\next##1{\next2470,80794 +\def\quotation{\quotation2474,80852 +\def\Equotation{\Equotation2480,81044 +\def\setdeffont #1 {\setdeffont2493,81442 +\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81488 +\newskip\defargsindent \defargsindent=50ptargsindent2496,81531 +\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81574 +\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81617 +\def\activeparens{\activeparens2503,81815 +\def\opnr{\opnr2529,83027 +\def\lbrb{\lbrb2530,83092 +\def\defname #1#2{\defname2536,83293 +\advance\dimen2 by -\defbodyindentbodyindent2540,83411 +\advance\dimen3 by -\defbodyindentbodyindent2542,83465 +\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83519 +\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83661 +\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83736 +\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84105 +\advance\leftskip by -\defbodyindentbodyindent2557,84239 +\exdentamount=\defbodyindentbodyindent2558,84276 +\def\defparsebody #1#2#3{\defparsebody2568,84635 +\def#1{2572,84819 +\def#2{2573,84855 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84927 +\exdentamount=\defbodyindentbodyindent2576,85001 +\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85105 +\def#1{2585,85266 +\def#2##1 {2586,85302 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85385 +\exdentamount=\defbodyindentbodyindent2589,85459 +\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85544 +\def#1{2596,85705 +\def#2##1 ##2 {2597,85741 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85841 +\exdentamount=\defbodyindentbodyindent2601,85915 +\def\defvarparsebody #1#2#3{\defvarparsebody2608,86186 +\def#1{2612,86373 +\def#2{2613,86409 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86468 +\exdentamount=\defbodyindentbodyindent2616,86542 +\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86633 +\def#1{2625,86792 +\def#2##1 {2626,86828 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86898 +\exdentamount=\defbodyindentbodyindent2629,86972 +\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87044 +\def#1{2636,87208 +\def#2##1 ##2 {2637,87244 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87331 +\exdentamount=\defbodyindentbodyindent2641,87405 +\def\defunargs #1{\defunargs2664,88165 +\def\deftypefunargs #1{\deftypefunargs2676,88547 +\def\deffn{\deffn2690,88929 +\def\deffnheader #1#2#3{\deffnheader2692,88986 +\begingroup\defname {name2693,89034 +\def\defun{\defun2699,89179 +\def\defunheader #1#2{\defunheader2701,89232 +\begingroup\defname {name2702,89307 +\defunargs {unargs2703,89343 +\def\deftypefun{\deftypefun2709,89491 +\def\deftypefunheader #1#2{\deftypefunheader2712,89613 +\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89722 +\begingroup\defname {name2716,89814 +\deftypefunargs {typefunargs2717,89860 +\def\deftypefn{\deftypefn2723,90031 +\def\deftypefnheader #1#2#3{\deftypefnheader2726,90180 +\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90316 +\begingroup\defname {name2730,90409 +\deftypefunargs {typefunargs2731,90449 +\def\defmac{\defmac2737,90570 +\def\defmacheader #1#2{\defmacheader2739,90627 +\begingroup\defname {name2740,90703 +\defunargs {unargs2741,90736 +\def\defspec{\defspec2747,90860 +\def\defspecheader #1#2{\defspecheader2749,90921 +\begingroup\defname {name2750,90998 +\defunargs {unargs2751,91038 +\def\deffnx #1 {\deffnx2758,91233 +\def\defunx #1 {\defunx2759,91290 +\def\defmacx #1 {\defmacx2760,91347 +\def\defspecx #1 {\defspecx2761,91406 +\def\deftypefnx #1 {\deftypefnx2762,91467 +\def\deftypeunx #1 {\deftypeunx2763,91532 +\def\defop #1 {\defop2769,91678 +\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91713 +\def\defopheader #1#2#3{\defopheader2772,91767 +\begingroup\defname {name2774,91856 +\defunargs {unargs2775,91902 +\def\defmethod{\defmethod2780,91963 +\def\defmethodheader #1#2#3{\defmethodheader2782,92036 +\begingroup\defname {name2784,92124 +\defunargs {unargs2785,92164 +\def\defcv #1 {\defcv2790,92238 +\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92273 +\def\defcvarheader #1#2#3{\defcvarheader2793,92332 +\begingroup\defname {name2795,92418 +\defvarargs {varargs2796,92464 +\def\defivar{\defivar2801,92537 +\def\defivarheader #1#2#3{\defivarheader2803,92600 +\begingroup\defname {name2805,92686 +\defvarargs {varargs2806,92737 +\def\defopx #1 {\defopx2812,92886 +\def\defmethodx #1 {\defmethodx2813,92943 +\def\defcvx #1 {\defcvx2814,93008 +\def\defivarx #1 {\defivarx2815,93065 +\def\defvarargs #1{\defvarargs2822,93336 +\def\defvr{\defvr2828,93480 +\def\defvrheader #1#2#3{\defvrheader2830,93535 +\begingroup\defname {name2831,93583 +\def\defvar{\defvar2835,93668 +\def\defvarheader #1#2{\defvarheader2837,93728 +\begingroup\defname {name2838,93799 +\defvarargs {varargs2839,93835 +\def\defopt{\defopt2844,93901 +\def\defoptheader #1#2{\defoptheader2846,93961 +\begingroup\defname {name2847,94032 +\defvarargs {varargs2848,94071 +\def\deftypevar{\deftypevar2853,94128 +\def\deftypevarheader #1#2{\deftypevarheader2856,94244 +\begingroup\defname {name2858,94327 +\def\deftypevr{\deftypevr2865,94501 +\def\deftypevrheader #1#2#3{\deftypevrheader2867,94572 +\begingroup\defname {name2868,94624 +\def\defvrx #1 {\defvrx2876,94861 +\def\defvarx #1 {\defvarx2877,94918 +\def\defoptx #1 {\defoptx2878,94977 +\def\deftypevarx #1 {\deftypevarx2879,95036 +\def\deftypevrx #1 {\deftypevrx2880,95103 +\def\deftpargs #1{\deftpargs2885,95252 +\def\deftp{\deftp2889,95332 +\def\deftpheader #1#2#3{\deftpheader2891,95387 +\begingroup\defname {name2892,95435 +\def\deftpx #1 {\deftpx2897,95594 +\def\setref#1{\setref2908,95915 +\def\unnumbsetref#1{\unnumbsetref2913,96029 +\def\appendixsetref#1{\appendixsetref2918,96136 +\def\pxref#1{\pxref2929,96547 +\def\xref#1{\xref2930,96583 +\def\ref#1{\ref2931,96618 +\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96648 +\def\printedmanual{\printedmanual2933,96691 +\def\printednodename{\printednodename2934,96729 +\def\printednodename{\printednodename2939,96854 +section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97487 +\refx{x2957,97565 +\def\dosetq #1#2{\dosetq2965,97785 +\def\internalsetq #1#2{\internalsetq2973,98043 +\def\Ypagenumber{\Ypagenumber2977,98144 +\def\Ytitle{\Ytitle2979,98170 +\def\Ynothing{\Ynothing2981,98197 +\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98214 +\def\Yappendixletterandtype{\Yappendixletterandtype2992,98530 +\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98560 +\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98615 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98719 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98790 + \def\linenumber{\linenumber3009,99129 +\def\refx#1#2{\refx3015,99313 +\def\xrdef #1#2{\xrdef3037,99939 +\def\readauxfile{\readauxfile3040,100024 +\def\supereject{\supereject3110,101805 +\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102490 +\def\openindices{\openindices3139,102676 +\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102901 +\parindent = \defaultparindentaultparindent3152,102953 +\def\smallbook{\smallbook3175,103677 +\global\def\Esmallexample{\Esmallexample3192,104104 +\def\afourpaper{\afourpaper3196,104195 +\def\finalout{\finalout3224,105003 +\def\normaldoublequote{\normaldoublequote3235,105264 +\def\normaltilde{\normaltilde3236,105290 +\def\normalcaret{\normalcaret3237,105310 +\def\normalunderscore{\normalunderscore3238,105330 +\def\normalverticalbar{\normalverticalbar3239,105355 +\def\normalless{\normalless3240,105381 +\def\normalgreater{\normalgreater3241,105400 +\def\normalplus{\normalplus3242,105422 +\def\ifusingtt#1#2{\ifusingtt3253,105914 +\def\activedoublequote{\activedoublequote3261,106242 +\def~{~3264,106328 +\def^{^3267,106389 +\def_{_3270,106428 +\def\_{\_3272,106502 +\def\lvvmode{\lvvmode3279,106839 +\def|{|3282,106889 +\def<{<3285,106952 +\def>{>3288,107009 +\def+{+3290,107047 +\def\turnoffactive{\turnoffactive3296,107208 +\global\def={=3307,107494 +\def\normalbackslash{\normalbackslash3321,107876 + +c-src/c.c,76 +T f(1,0 +}T i;2,14 +void bar(5,69 +int foobar(6,94 +interface_locate(9,131 + +c.c,1963 +my_printf 135, +void fatala 138, +max 141, +struct bar 143, + char z;144, + struct foo f;145, +__attribute__ ((always_inline)) max 147, +struct foo150, + char a;152, + int x[x153, +char stack[stack155, +struct S 156, +struct S { short f[f156, + int *__ip;__ip159, + union wait *__up;__up160, +} wait_status_ptr_t 161, +Some_Class A 162, +typedef T1 T3 163, +T3 z 164, +typedef int more_aligned_int 165, +struct S __attribute__ ((vector_size (16))) foo;166, +int foo 167, +char *__attribute__((aligned(8))) *f;f168, +int i 169, +extern void foobar 170, +typedef struct cacheLRUEntry_s172, + U16 next;174, + U16 prev;175, +__attribute__ ((packed)) cacheLRUEntry_t;177, +struct foo 178, + int x;179, + char a,180, + char a, b,180, + char a, b, c,180, + char a, b, c, d;180, + f1 183, +void f2 184, +int x 188, +struct foo 189, +struct foo { int x[x189, +short array[array190, +int f193, +DEAFUN 196, +XDEFUN 203, +DEFUN ("x-get-selection-internal", Fx_get_selection_internal,x-get-selection-internal206, + Fx_get_selection_internal,x-get-selection-internal212, + Fy_get_selection_internal,y-get-selection-internal216, +defun_func1(218, +DEFUN_func2(220, +typedef int bool;222, +bool funcboo 223, +struct my_struct 226, +typedef struct my_struct my_typedef;228, +int bla 229, +a(234, +int func1237, +static struct cca_control init_control 239, +static tpcmd rbtp 240, +static byte ring1 241, +static byte ring2 242, +request request 243, +int func2 246, + aaa;249, + bbb;251, +struct sss1 252, +struct sss2253, + struct ss3255, +struct a b;259, +struct aa *b;b260, + **b;b262, +caccacacca 263, +a 267, + typedef struct aa 269, + typedef struct aa {} aaa;269, +static void inita 271, +node *lasta lasta272, +b 273, + typedef int bb;275, +static void initb 277, +node *lastb lastb278, +typedef enum { REG_ENOSYS 279, +typedef enum { REG_ENOSYS = -1, aa 279, +typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;279, + +c-src/a/b/b.c,18 +#define this 1,0 + +../c/c.web,20 +#define questo 34, + +y-src/parse.y,738 +#define obstack_chunk_alloc 46,1116 +#define obstack_chunk_free 47,1154 +VOIDSTAR parse_hash;63,1405 +unsigned char fnin[fnin67,1524 +#define YYSTYPE 71,1622 +typedef struct node *YYSTYPE;YYSTYPE72,1653 +YYSTYPE parse_return;73,1683 +char *instr;instr80,1795 +int parse_error 81,1808 +line:line86,1867 +exp:exp94,1980 +exp_list:exp_list262,5647 +range_exp:range_exp268,5745 +range_exp_list:range_exp_list272,5775 +cell:cell278,5893 +yyerror FUN1(285,5940 +make_list FUN2(292,6020 +#define ERROR 303,6220 +yylex FUN0(314,6397 +parse_cell_or_range FUN2(586,11763 +#define CK_ABS_R(670,13205 +#define CK_REL_R(674,13284 +#define CK_ABS_C(679,13413 +#define CK_REL_C(683,13492 +#define MAYBEREL(688,13621 +str_to_col FUN1(846,16822 + +y-src/parse.c,520 +#define YYBISON 4,64 +# define NE 6,114 +# define LE 7,130 +# define GE 8,146 +# define NEG 9,162 +# define L_CELL 10,179 +# define L_RANGE 11,199 +# define L_VAR 12,220 +# define L_CONST 13,239 +# define L_FN0 14,260 +# define L_FN1 15,279 +# define L_FN2 16,298 +# define L_FN3 17,317 +# define L_FN4 18,336 +# define L_FNN 19,355 +# define L_FN1R 20,374 +# define L_FN2R 21,394 +# define L_FN3R 22,414 +# define L_FN4R 23,434 +# define L_FNNR 24,454 +# define L_LE 25,474 +# define L_NE 26,492 +# define L_GE 27,510 + +parse.y,1181 +#define obstack_chunk_alloc 46, +#define obstack_chunk_free 47, +VOIDSTAR parse_hash;63, +unsigned char fnin[fnin67, +#define YYSTYPE 71, +typedef struct node *YYSTYPE;YYSTYPE72, +YYSTYPE parse_return;73, +char *instr;instr80, +int parse_error 81, +#define YYSTYPE 85, +# define YYDEBUG 88, +#define YYFINAL 93, +#define YYFLAG 94, +#define YYNTBASE 95, +#define YYTRANSLATE(98, +static const char yytranslate[yytranslate101, +static const short yyprhs[yyprhs134, +static const short yyrhs[yyrhs142, +static const short yyrline[yyrline171, +static const char *const yytname[yytname185, +static const short yyr1[yyr1197, +static const short yyr2[yyr2207, +static const short yydefact[yydefact219, +static const short yydefgoto[yydefgoto237, +static const short yypact[yypact242, +static const short yypgoto[yypgoto260, +#define YYLAST 266, +static const short yytable[yytable269, +static const short yycheck[yycheck330, +yyerror FUN1(285, +make_list FUN2(292, +#define ERROR 303, +yylex FUN0(314, +parse_cell_or_range FUN2(586, +#define CK_ABS_R(670, +#define CK_REL_R(674, +#define CK_ABS_C(679, +#define CK_REL_C(683, +#define MAYBEREL(688, +str_to_col FUN1(846, + +/usr/share/bison/bison.simple,2168 +# define YYSTD(40, +# define YYSTD(42, +# define YYSTACK_ALLOC 50, +# define YYSIZE_T 51, +# define YYSTACK_ALLOC 55, +# define YYSIZE_T 56, +# define YYSTACK_ALLOC 59, +# define YYSTACK_FREE(67, +# define YYSIZE_T 71, +# define YYSIZE_T 75, +# define YYSTACK_ALLOC 78, +# define YYSTACK_FREE 79, +union yyalloc83, + short yyss;85, + YYSTYPE yyvs;86, + YYLTYPE yyls;88, +# define YYSTACK_GAP_MAX 93, +# define YYSTACK_BYTES(98, +# define YYSTACK_BYTES(102, +# define YYSTACK_RELOCATE(112, +# define YYSIZE_T 128, +# define YYSIZE_T 131, +# define YYSIZE_T 136, +# define YYSIZE_T 140, +# define YYSIZE_T 145, +#define yyerrok 148, +#define yyclearin 149, +#define YYEMPTY 150, +#define YYEOF 151, +#define YYACCEPT 152, +#define YYABORT 153, +#define YYERROR 154, +#define YYFAIL 158, +#define YYRECOVERING(159, +#define YYBACKUP(160, +#define YYTERROR 177, +#define YYERRCODE 178, +# define YYLLOC_DEFAULT(189, +# define YYLEX 200, +# define YYLEX 202, +# define YYLEX 206, +# define YYLEX 208, +# define YYLEX 212, +# define YYFPRINTF 225, +# define YYDPRINTF(228, +int yydebug;237, +# define YYDPRINTF(239, +# define YYINITDEPTH 244, +# undef YYMAXDEPTH255, +# define YYMAXDEPTH 259, +# define yymemcpy 264, +yymemcpy 271, +# define yystrlen 293, +yystrlen 298, +# define yystpcpy 316, +yystpcpy 322, +# define YYPARSE_PARAM_ARG 351, +# define YYPARSE_PARAM_DECL352, +# define YYPARSE_PARAM_ARG 354, +# define YYPARSE_PARAM_DECL 355, +# define YYPARSE_PARAM_ARG358, +# define YYPARSE_PARAM_DECL359, +#define YY_DECL_NON_LSP_VARIABLES 374, +# define YY_DECL_VARIABLES 385, +# define YY_DECL_VARIABLES 391, +yyparse 403, +# define YYPOPSTACK 445, +# define YYPOPSTACK 447, +# undef YYSTACK_RELOCATE548, + *++yyvsp yyvsp746, + *++yylsp yylsp748, + yyn 755, + yystate 757, + yystate 761, + goto yynewstate;763, + goto yyerrlab1;823, + yyerrstatus 846, + goto yyerrhandle;848, + yyn 861, + yystate 875, + yyn 895, + yyn 903, + *++yyvsp yyvsp919, + *++yylsp yylsp921, + yystate 924, + goto yynewstate;925, + yyresult 932, + goto yyreturn;933, + yyresult 939, + goto yyreturn;940, + yyresult 947, + +y-src/atest.y,9 +exp 2,3 + +y-src/cccp.c,303 +#define YYBISON 4,63 +# define INT 6,113 +# define CHAR 7,130 +# define NAME 8,148 +# define ERROR 9,166 +# define OR 10,185 +# define AND 11,201 +# define EQUAL 12,218 +# define NOTEQUAL 13,237 +# define LEQ 14,259 +# define GEQ 15,276 +# define LSH 16,293 +# define RSH 17,310 +# define UNARY 18,327 + +cccp.y,2106 +typedef unsigned char U_CHAR;38, +struct arglist 41, + struct arglist *next;next42, + U_CHAR *name;name43, + int length;44, + int argno;45, +#define NULL 51, +#define GENERIC_PTR 56, +#define GENERIC_PTR 58, +#define NULL_PTR 63, +int expression_value;68, +static jmp_buf parse_return_error;70, +static int keyword_parsing 73, +#define CHAR_TYPE_SIZE 87, +#define INT_TYPE_SIZE 91, +#define LONG_TYPE_SIZE 95, +#define WCHAR_TYPE_SIZE 99, +#define possible_sum_sign(104, + struct constant 113, + struct constant {long value;113, + struct constant {long value; int unsignedp;113, + struct constant {long value; int unsignedp;} integer;113, + struct name 114, + struct name {U_CHAR *address;address114, + struct name {U_CHAR *address; int length;114, + struct name {U_CHAR *address; int length;} name;114, + struct arglist *keywords;keywords115, + int voidval;116, + char *sval;sval117, +} yystype;118, +# define YYSTYPE 119, +# define YYDEBUG 122, +#define YYFINAL 127, +#define YYFLAG 128, +#define YYNTBASE 129, +#define YYTRANSLATE(132, +static const char yytranslate[yytranslate135, +static const short yyprhs[yyprhs167, +static const short yyrhs[yyrhs174, +static const short yyrline[yyrline195, +static const char *const yytname[yytname208, +static const short yyr1[yyr1219, +static const short yyr2[yyr2228, +static const short yydefact[yydefact239, +static const short yydefgoto[yydefgoto251, +static const short yypact[yypact256, +static const short yypgoto[yypgoto268, +#define YYLAST 274, +static const short yytable[yytable277, +static const short yycheck[yycheck301, +static char *lexptr;lexptr332, +parse_number 341, +struct token 437, + char *operator;operator438, + int token;439, +static struct token tokentab2[tokentab2442, +yylex 459, +parse_escape 740, +yyerror 836, +integer_overflow 844, +left_shift 851, +right_shift 873, +parse_c_expression 893, +main 923, +unsigned char is_idchar[is_idchar948, +unsigned char is_idstart[is_idstart950, +char is_hor_space[is_hor_space953, +initialize_random_junk 958, +error 988, +warning 993, +lookup 999, + +/usr/share/bison/bison.simple,2168 +# define YYSTD(41, +# define YYSTD(43, +# define YYSTACK_ALLOC 51, +# define YYSIZE_T 52, +# define YYSTACK_ALLOC 56, +# define YYSIZE_T 57, +# define YYSTACK_ALLOC 60, +# define YYSTACK_FREE(68, +# define YYSIZE_T 72, +# define YYSIZE_T 76, +# define YYSTACK_ALLOC 79, +# define YYSTACK_FREE 80, +union yyalloc84, + short yyss;86, + YYSTYPE yyvs;87, + YYLTYPE yyls;89, +# define YYSTACK_GAP_MAX 94, +# define YYSTACK_BYTES(99, +# define YYSTACK_BYTES(103, +# define YYSTACK_RELOCATE(113, +# define YYSIZE_T 129, +# define YYSIZE_T 132, +# define YYSIZE_T 137, +# define YYSIZE_T 141, +# define YYSIZE_T 146, +#define yyerrok 149, +#define yyclearin 150, +#define YYEMPTY 151, +#define YYEOF 152, +#define YYACCEPT 153, +#define YYABORT 154, +#define YYERROR 155, +#define YYFAIL 159, +#define YYRECOVERING(160, +#define YYBACKUP(161, +#define YYTERROR 178, +#define YYERRCODE 179, +# define YYLLOC_DEFAULT(190, +# define YYLEX 201, +# define YYLEX 203, +# define YYLEX 207, +# define YYLEX 209, +# define YYLEX 213, +# define YYFPRINTF 226, +# define YYDPRINTF(229, +int yydebug;238, +# define YYDPRINTF(240, +# define YYINITDEPTH 245, +# undef YYMAXDEPTH256, +# define YYMAXDEPTH 260, +# define yymemcpy 265, +yymemcpy 272, +# define yystrlen 294, +yystrlen 299, +# define yystpcpy 317, +yystpcpy 323, +# define YYPARSE_PARAM_ARG 351, +# define YYPARSE_PARAM_DECL352, +# define YYPARSE_PARAM_ARG 354, +# define YYPARSE_PARAM_DECL 355, +# define YYPARSE_PARAM_ARG358, +# define YYPARSE_PARAM_DECL359, +#define YY_DECL_NON_LSP_VARIABLES 374, +# define YY_DECL_VARIABLES 385, +# define YY_DECL_VARIABLES 391, +yyparse 403, +# define YYPOPSTACK 445, +# define YYPOPSTACK 447, +# undef YYSTACK_RELOCATE548, + *++yyvsp yyvsp746, + *++yylsp yylsp748, + yyn 755, + yystate 757, + yystate 761, + goto yynewstate;763, + goto yyerrlab1;823, + yyerrstatus 846, + goto yyerrhandle;848, + yyn 861, + yystate 875, + yyn 895, + yyn 903, + *++yyvsp yyvsp919, + *++yylsp yylsp921, + yystate 924, + goto yynewstate;925, + yyresult 932, + goto yyreturn;933, + yyresult 939, + goto yyreturn;940, + yyresult 947, + +y-src/cccp.y,1696 +typedef unsigned char U_CHAR;38,1201 +struct arglist 41,1301 + struct arglist *next;next42,1318 + U_CHAR *name;name43,1342 + int length;44,1358 + int argno;45,1372 +#define NULL 51,1468 +#define GENERIC_PTR 56,1578 +#define GENERIC_PTR 58,1611 +#define NULL_PTR 63,1670 +int expression_value;68,1743 +static jmp_buf parse_return_error;70,1766 +static int keyword_parsing 73,1865 +#define CHAR_TYPE_SIZE 87,2162 +#define INT_TYPE_SIZE 91,2229 +#define LONG_TYPE_SIZE 95,2296 +#define WCHAR_TYPE_SIZE 99,2365 +#define possible_sum_sign(104,2556 + struct constant 112,2733 + struct constant {long value;112,2733 + struct constant {long value; int unsignedp;112,2733 + struct constant {long value; int unsignedp;} integer;112,2733 + struct name 113,2789 + struct name {U_CHAR *address;address113,2789 + struct name {U_CHAR *address; int length;113,2789 + struct name {U_CHAR *address; int length;} name;113,2789 + struct arglist *keywords;keywords114,2840 + int voidval;115,2868 + char *sval;sval116,2883 +start 143,3226 +exp1 148,3330 +exp 156,3505 +exp 185,4295 +keywords 306,7835 +static char *lexptr;lexptr332,8579 +parse_number 341,8842 +struct token 437,11038 + char *operator;operator438,11053 + int token;439,11071 +static struct token tokentab2[tokentab2442,11088 +yylex 459,11367 +parse_escape 740,17718 +yyerror 836,19599 +integer_overflow 844,19690 +left_shift 851,19804 +right_shift 873,20194 +parse_c_expression 893,20732 +main 923,21483 +unsigned char is_idchar[is_idchar948,21901 +unsigned char is_idstart[is_idstart950,21996 +char is_hor_space[is_hor_space953,22160 +initialize_random_junk 958,22259 +error 988,22915 +warning 993,22963 +lookup 999,23033 + +tex-src/nonewline.tex,0 + +php-src/sendmail.php,0 + +c-src/fail.c,0 + +a-src/empty.zz,0 diff --cc test/manual/etags/ETAGS.good_4 index b8a3d9de6db,00000000000..12e2a6549cf mode 100644,000000..100644 --- a/test/manual/etags/ETAGS.good_4 +++ b/test/manual/etags/ETAGS.good_4 @@@ -1,4475 -1,0 +1,4475 @@@ + +ada-src/etags-test-for.ada,1969 + type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0 + function Body_RequiredBody_Required/f3,78 + type Type_Specific_Data Type_Specific_Data/t11,280 + function "abs"abs/f19,504 + type Barrier_Function_Pointer Barrier_Function_Pointer/t21,577 + function "="=/f27,722 + type usfreelock_ptr usfreelock_ptr/t30,803 + function p p/f33,891 + procedure LL_Wrapper LL_Wrapper/p37,1054 +function p p/f39,1094 +package Pkg1 Pkg1/s44,1203 + type Private_T Private_T/t46,1220 + package Inner1 Inner1/s48,1250 + procedure Private_T;Private_T/p49,1270 + package Inner2 Inner2/s52,1310 + task Private_T;Private_T/k53,1330 + type Public_T Public_T/t56,1365 + procedure Pkg1_Proc1;Pkg1_Proc1/p62,1450 + procedure Pkg1_Proc2 Pkg1_Proc2/p64,1475 + function Pkg1_Func1 Pkg1_Func1/f66,1514 + function Pkg1_Func2 Pkg1_Func2/f68,1553 + package Pkg1_Pkg1 Pkg1_Pkg1/s71,1622 + procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p72,1645 + task type Task_Type Task_Type/k75,1694 + type Private_T Private_T/t82,1786 +package body Pkg1 Pkg1/b89,1882 + procedure Pkg1_Proc1 Pkg1_Proc1/p91,1904 + package body Inner1 Inner1/b96,1956 + procedure Private_T Private_T/p97,1981 + package body Inner2 Inner2/b103,2054 + task body Private_T Private_T/b104,2079 + task body Task_Type Task_Type/b112,2181 + procedure Pkg1_Proc2 Pkg1_Proc2/p126,2367 + function Pkg1_Func1 Pkg1_Func1/f132,2445 + function Pkg1_Func2 Pkg1_Func2/f134,2496 + package body Pkg1_Pkg1 Pkg1_Pkg1/b140,2596 +package body Pkg1_Pkg1 Pkg1_Pkg1/b146,2663 + procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p147,2689 +function Pkg1_Func1 Pkg1_Func1/f155,2778 +package Truc Truc/s162,2887 +package Truc.Bidule Truc.Bidule/s166,2929 + protected Bidule Bidule/t168,2953 + protected type Machin_T Machin_T/t172,3007 +package body Truc.Bidule Truc.Bidule/b178,3087 + protected body Bidule Bidule/b179,3115 + protected Machin_T Machin_T/t186,3207 + +ada-src/2ataspri.adb,2190 +package body System.Task_Primitives System.Task_Primitives/b64,2603 + package RTE RTE/s69,2712 + package TSL TSL/s70,2759 + function To_void_ptr To_void_ptr/f86,3287 + function To_TCB_Ptr To_TCB_Ptr/f89,3366 + function pthread_mutexattr_setprotocolpthread_mutexattr_setprotocol/f92,3444 + function pthread_mutexattr_setprio_ceilingpthread_mutexattr_setprio_ceiling/f99,3728 + procedure Abort_WrapperAbort_Wrapper/p115,4302 + procedure LL_Wrapper LL_Wrapper/p122,4526 + procedure Initialize_LL_Tasks Initialize_LL_Tasks/p131,4830 + function Self Self/f160,5586 + procedure Initialize_LockInitialize_Lock/p174,5958 + procedure Finalize_Lock Finalize_Lock/p210,6927 + procedure Write_Lock Write_Lock/p226,7338 + procedure Read_Lock Read_Lock/p239,7700 + procedure Unlock Unlock/p246,7850 + procedure Initialize_Cond Initialize_Cond/p258,8160 + procedure Finalize_Cond Finalize_Cond/p286,8979 + procedure Cond_Wait Cond_Wait/p300,9303 + procedure Cond_Timed_WaitCond_Timed_Wait/p312,9661 + procedure Cond_Signal Cond_Signal/p343,10510 + procedure Set_PrioritySet_Priority/p355,10836 + procedure Set_Own_Priority Set_Own_Priority/p372,11243 + function Get_Priority Get_Priority/f385,11598 + function Get_Own_Priority Get_Own_Priority/f398,12023 + procedure Create_LL_TaskCreate_LL_Task/p412,12438 + function To_Start_Addr To_Start_Addr/f426,12873 + procedure Exit_LL_Task Exit_LL_Task/p491,14995 + procedure Abort_Task Abort_Task/p500,15158 + procedure Test_Abort Test_Abort/p518,15716 + procedure Install_Abort_Handler Install_Abort_Handler/p527,15878 + procedure Abort_WrapperAbort_Wrapper/p557,16939 + function Address_To_Call_State Address_To_Call_State/f562,17062 + procedure Install_Error_Handler Install_Error_Handler/p573,17351 + procedure LL_Assert LL_Assert/p599,18146 + procedure LL_Wrapper LL_Wrapper/p608,18299 + procedure Initialize_TAS_Cell Initialize_TAS_Cell/p630,19010 + procedure Finalize_TAS_Cell Finalize_TAS_Cell/p635,19129 + procedure Clear Clear/p640,19236 + procedure Test_And_Set Test_And_Set/p645,19330 + function Is_Set Is_Set/f659,19676 + +ada-src/2ataspri.ads,2313 +package System.Task_Primitives System.Task_Primitives/s58,3169 + type LL_Task_Procedure_Access LL_Task_Procedure_Access/t62,3253 + type Pre_Call_State Pre_Call_State/t64,3331 + type Task_Storage_Size Task_Storage_Size/t66,3378 + type Machine_Exceptions Machine_Exceptions/t68,3433 + type Error_Information Error_Information/t70,3499 + type Lock Lock/t72,3569 + type Condition_Variable Condition_Variable/t73,3594 + type Task_Control_Block Task_Control_Block/t81,3955 + type TCB_Ptr TCB_Ptr/t89,4241 + function Address_To_TCB_Ptr Address_To_TCB_Ptr/f93,4333 + procedure Initialize_LL_Tasks Initialize_LL_Tasks/p96,4425 + function Self Self/f100,4602 + procedure Initialize_Lock Initialize_Lock/p103,4707 + procedure Finalize_Lock Finalize_Lock/p107,4879 + procedure Write_Lock Write_Lock/p111,5034 + procedure Read_Lock Read_Lock/p118,5428 + procedure Unlock Unlock/p128,5995 + procedure Initialize_Cond Initialize_Cond/p135,6300 + procedure Finalize_Cond Finalize_Cond/p138,6413 + procedure Cond_Wait Cond_Wait/p142,6591 + procedure Cond_Timed_WaitCond_Timed_Wait/p155,7396 + procedure Cond_Signal Cond_Signal/p164,7812 + procedure Set_Priority Set_Priority/p169,8040 + procedure Set_Own_Priority Set_Own_Priority/p173,8200 + function Get_Priority Get_Priority/f177,8348 + function Get_Own_Priority Get_Own_Priority/f181,8504 + procedure Create_LL_TaskCreate_LL_Task/p185,8647 + procedure Exit_LL_Task;Exit_LL_Task/p198,9282 + procedure Abort_Task Abort_Task/p203,9516 + procedure Test_Abort;Test_Abort/p210,9878 + type Abort_Handler_Pointer Abort_Handler_Pointer/t217,10233 + procedure Install_Abort_Handler Install_Abort_Handler/p219,10312 + procedure Install_Error_Handler Install_Error_Handler/p226,10741 + procedure LL_Assert LL_Assert/p231,10983 + type Proc Proc/t238,11240 + type TAS_Cell TAS_Cell/t242,11328 + procedure Initialize_TAS_Cell Initialize_TAS_Cell/p249,11670 + procedure Finalize_TAS_Cell Finalize_TAS_Cell/p255,11941 + procedure Clear Clear/p260,12157 + procedure Test_And_Set Test_And_Set/p267,12462 + function Is_Set Is_Set/f275,12877 + type Lock Lock/t283,13155 + type Condition_Variable Condition_Variable/t288,13267 + type TAS_Cell TAS_Cell/t293,13389 + +ada-src/waroquiers.ada,1503 +package Pkg1 Pkg1/s3,89 + type Private_T Private_T/t5,106 + package Inner1 Inner1/s7,136 + procedure Private_T;Private_T/p8,156 + package Inner2 Inner2/s11,196 + task Private_T;Private_T/k12,216 + type Public_T Public_T/t15,251 + procedure Pkg1_Proc1;Pkg1_Proc1/p21,336 + procedure Pkg1_Proc2 Pkg1_Proc2/p23,361 + function Pkg1_Func1 Pkg1_Func1/f25,400 + function Pkg1_Func2 Pkg1_Func2/f27,439 + package Pkg1_Pkg1 Pkg1_Pkg1/s30,508 + procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p31,531 + task type Task_Type Task_Type/k34,580 + type Private_T Private_T/t40,671 +package body Pkg1 Pkg1/b46,766 + procedure Pkg1_Proc1 Pkg1_Proc1/p48,788 + package body Inner1 Inner1/b53,840 + procedure Private_T Private_T/p54,865 + package body Inner2 Inner2/b60,938 + task body Private_T Private_T/b61,963 + task body Task_Type Task_Type/b68,1064 + procedure Pkg1_Proc2 Pkg1_Proc2/p82,1250 + function Pkg1_Func1 Pkg1_Func1/f88,1328 + function Pkg1_Func2 Pkg1_Func2/f90,1379 + package body Pkg1_Pkg1 Pkg1_Pkg1/b96,1479 +package body Pkg1_Pkg1 Pkg1_Pkg1/b100,1544 + procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p101,1570 +function Pkg1_Func1 Pkg1_Func1/f107,1657 +package Truc Truc/s112,1764 +package Truc.Bidule Truc.Bidule/s116,1816 + protected Bidule Bidule/t125,1964 + protected type Machin_T Machin_T/t131,2046 +package body Truc.Bidule Truc.Bidule/b138,2153 + protected body Bidule Bidule/b139,2181 + protected body Machin_T Machin_T/b146,2281 + +c-src/abbrev.c,2634 +Lisp_Object Vabbrev_table_name_list;43,1424 +Lisp_Object Vglobal_abbrev_table;48,1569 +Lisp_Object Vfundamental_mode_abbrev_table;52,1680 +int abbrevs_changed;56,1781 +int abbrev_all_caps;58,1803 +Lisp_Object Vabbrev_start_location;63,1952 +Lisp_Object Vabbrev_start_location_buffer;66,2041 +Lisp_Object Vlast_abbrev;70,2150 +Lisp_Object Vlast_abbrev_text;75,2319 +int last_abbrev_point;79,2409 +Lisp_Object Vpre_abbrev_expand_hook,83,2482 +Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2482 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2546 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2738 +DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3119 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev149,4438 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4809 +DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5277 +DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6241 +DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6756 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11677 +write_abbrev 426,12884 +describe_abbrev 445,13319 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description466,13834 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table506,14990 +syms_of_abbrev 540,16067 + DEFVAR_LISP ("abbrev-table-name-list"542,16087 + DEFVAR_LISP ("global-abbrev-table"548,16349 + DEFVAR_LISP ("fundamental-mode-abbrev-table"555,16671 + DEFVAR_LISP ("last-abbrev"561,17013 + DEFVAR_LISP ("last-abbrev-text"564,17136 + DEFVAR_INT ("last-abbrev-location"568,17294 + DEFVAR_LISP ("abbrev-start-location"575,17493 + DEFVAR_LISP ("abbrev-start-location-buffer"581,17770 + DEFVAR_PER_BUFFER ("local-abbrev-table"586,18034 + DEFVAR_BOOL ("abbrevs-changed"589,18177 + DEFVAR_BOOL ("abbrev-all-caps"594,18380 + DEFVAR_LISP ("pre-abbrev-expand-hook"598,18536 + DEFVAR_LISP ("abbrev-table-name-list",\1542,16087 + DEFVAR_LISP ("global-abbrev-table",\1548,16349 + DEFVAR_LISP ("fundamental-mode-abbrev-table",\1555,16671 + DEFVAR_LISP ("last-abbrev",\1561,17013 + DEFVAR_LISP ("last-abbrev-text",\1564,17136 + DEFVAR_INT ("last-abbrev-location",\1568,17294 + DEFVAR_LISP ("abbrev-start-location",\1575,17493 + DEFVAR_LISP ("abbrev-start-location-buffer",\1581,17770 + DEFVAR_PER_BUFFER ("local-abbrev-table",\1586,18034 + DEFVAR_BOOL ("abbrevs-changed",\1589,18177 + DEFVAR_BOOL ("abbrev-all-caps",\1594,18380 + DEFVAR_LISP ("pre-abbrev-expand-hook",\1598,18536 + +c-src/torture.c,197 +(*tag1 tag118,452 +#define notag2 26,553 +(*tag2 tag229,630 +(*tag3 tag339,772 +#define notag4 45,861 +(*tag4 tag448,955 +tag5 57,1081 +tag6 66,1208 +int pp1(74,1317 +pp287,1419 +pp3(100,1518 + +c-src/getopt.h,147 +#define _GETOPT_H 19,794 +struct option73,2790 +#define no_argument 89,3117 +#define required_argument 90,3140 +#define optional_argument 91,3168 + +c-src/etags.c,10045 +char pot_etags_version[pot_etags_version81,3470 +# undef DEBUG84,3552 +# define DEBUG 85,3567 +# define DEBUG 87,3594 +# define NDEBUG 88,3617 +# define _GNU_SOURCE 94,3705 +# undef MSDOS100,3876 +# undef WINDOWSNT101,3890 +# define WINDOWSNT102,3909 +# undef MSDOS106,3968 +# define MSDOS 107,3982 +# define MSDOS 110,4032 +# define MAXPATHLEN 115,4111 +# undef HAVE_NTGUI116,4141 +# undef DOS_NT117,4160 +# define DOS_NT118,4176 +# undef assert 135,4482 +# define assert(136,4541 +# undef CTAGS146,4857 +# define CTAGS 147,4872 +# define CTAGS 149,4898 +#define streq(152,4927 +#define strcaseeq(153,4996 +#define strneq(154,5075 +#define strncaseeq(155,5151 +#define CHARS 157,5238 +#define CHAR(158,5278 +#define iswhite(159,5329 +#define notinname(160,5394 +#define begtoken(161,5469 +#define intoken(162,5542 +#define endtoken(163,5614 +#define ISALNUM(165,5684 +#define ISALPHA(166,5722 +#define ISDIGIT(167,5760 +#define ISLOWER(168,5798 +#define lowcase(170,5837 +#define xnew(179,6015 +#define xrnew(180,6083 +typedef void Lang_function 182,6164 +} compressor;188,6365 +} language;199,6835 +typedef struct fdesc201,6848 +} fdesc;212,7366 +typedef struct node_st214,7376 +} node;225,7894 +} linebuffer;239,8248 + at_language,245,8344 + at_regexp,246,8393 + at_filename,247,8437 + at_stdin,248,8473 + at_end 249,8516 +} argument;253,8698 +typedef struct regexp256,8758 +} regexp;268,9325 +static void error 311,10780 +# undef STDIN408,15073 +#define STDIN 411,15095 +static compressor compressors[compressors457,17664 +static const char *Ada_suffixes Ada_suffixes473,17907 +static const char Ada_help 475,17977 +static const char *Asm_suffixes Asm_suffixes493,18580 +static const char Asm_help 504,18976 +static const char *default_C_suffixes default_C_suffixes512,19312 +static const char default_C_help 515,19413 +static const char default_C_help 523,19850 +static const char *Cplusplus_suffixes Cplusplus_suffixes535,20460 +static const char Cplusplus_help 540,20658 +static const char *Cjava_suffixes Cjava_suffixes549,21113 +static char Cjava_help 551,21172 +static const char *Cobol_suffixes Cobol_suffixes556,21337 +static char Cobol_help 558,21402 +static const char *Cstar_suffixes Cstar_suffixes562,21543 +static const char *Erlang_suffixes Erlang_suffixes565,21607 +static const char Erlang_help 567,21673 +const char *Forth_suffixes Forth_suffixes571,21799 +static const char Forth_help 573,21857 +static const char *Fortran_suffixes Fortran_suffixes577,22008 +static const char Fortran_help 579,22085 +static const char *HTML_suffixes HTML_suffixes582,22190 +static const char HTML_help 584,22264 +static const char *Lisp_suffixes Lisp_suffixes589,22452 +static const char Lisp_help 591,22556 +static const char *Lua_suffixes Lua_suffixes598,22871 +static const char Lua_help 600,22934 +static const char *Makefile_filenames Makefile_filenames603,23010 +static const char Makefile_help 605,23133 +static const char *Objc_suffixes Objc_suffixes609,23277 +static const char Objc_help 613,23399 +static const char *Pascal_suffixes Pascal_suffixes619,23714 +static const char Pascal_help 621,23778 +static const char *Perl_suffixes Perl_suffixes626,23966 +static const char *Perl_interpreters Perl_interpreters628,24028 +static const char Perl_help 630,24100 +static const char *PHP_suffixes PHP_suffixes637,24451 +static const char PHP_help 639,24523 +static const char *plain_C_suffixes plain_C_suffixes643,24678 +static const char *PS_suffixes PS_suffixes647,24762 +static const char PS_help 649,24848 +static const char *Prolog_suffixes Prolog_suffixes652,24931 +static const char Prolog_help 654,24993 +static const char *Python_suffixes Python_suffixes658,25107 +static const char Python_help 660,25165 +static const char *Scheme_suffixes Scheme_suffixes665,25347 +static const char Scheme_help 667,25460 +static const char *TeX_suffixes TeX_suffixes672,25683 +static const char TeX_help 674,25781 +static const char *Texinfo_suffixes Texinfo_suffixes686,26316 +static const char Texinfo_help 688,26395 +static const char *Yacc_suffixes Yacc_suffixes691,26492 +static const char Yacc_help 693,26606 +static const char auto_help 699,26856 +static const char none_help 703,27020 +static const char no_lang_help 707,27143 +static language lang_names 718,27355 +print_language_names 753,29532 +# define EMACS_NAME 786,30755 +# define VERSION 789,30811 +print_version 792,30869 +# define PRINT_UNDOCUMENTED_OPTIONS_HELP 804,31173 +print_help 808,31250 +main 981,37438 +get_compressor_from_suffix 1319,46217 +get_language_from_langname 1355,47158 +get_language_from_interpreter 1377,47545 +get_language_from_filename 1399,47976 +process_file_name 1433,48834 +process_file 1555,51665 +init 1632,54150 +find_entries 1656,54901 +make_tag 1814,59707 +pfnote 1856,60942 +free_tree 1917,62744 +free_fdesc 1935,63029 +add_node 1955,63472 +invalidate_nodes 2035,65537 +static int number_len 2068,66193 +total_size_of_entries 2087,66694 +put_entries 2107,67154 +#define C_EXT 2193,68995 +#define C_PLAIN 2194,69037 +#define C_PLPL 2195,69070 +#define C_STAR 2196,69104 +#define C_JAVA 2197,69137 +#define C_AUTO 2198,69172 +#define YACC 2199,69242 +enum sym_type2204,69312 + st_none,2206,69328 + st_C_objprot,2207,69339 + st_C_objprot, st_C_objimpl,2207,69339 + st_C_objprot, st_C_objimpl, st_C_objend,2207,69339 + st_C_gnumacro,2208,69382 + st_C_ignore,2209,69399 + st_C_ignore, st_C_attribute,2209,69399 + st_C_javastruct,2210,69430 + st_C_operator,2211,69449 + st_C_class,2212,69466 + st_C_class, st_C_template,2212,69466 + st_C_struct,2213,69495 + st_C_struct, st_C_extern,2213,69495 + st_C_struct, st_C_extern, st_C_enum,2213,69495 + st_C_struct, st_C_extern, st_C_enum, st_C_define,2213,69495 + st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef2213,69495 +struct C_stab_entry 2271,71278 +hash 2275,71409 +in_word_set 2321,72937 + TOTAL_KEYWORDS 2325,73018 + MIN_WORD_LENGTH 2326,73045 + MAX_WORD_LENGTH 2327,73072 + MIN_HASH_VALUE 2328,73100 + MAX_HASH_VALUE 2329,73126 +C_symtype 2387,74985 +static bool inattribute;2400,75234 + fvnone,2408,75435 + fdefunkey,2409,75466 + fdefunname,2410,75512 + foperator,2411,75556 + fvnameseen,2412,75613 + fstartlist,2413,75666 + finlist,2414,75722 + flistseen,2415,75765 + fignore,2416,75813 + vignore 2417,75856 +} fvdef;2418,75901 +static bool fvextern;2420,75911 + tnone,2428,76089 + tkeyseen,2429,76119 + ttypeseen,2430,76160 + tinbody,2431,76199 + tend,2432,76238 + tignore 2433,76279 +} typdef;2434,76320 + snone,2443,76499 + skeyseen,2445,76575 + stagseen,2446,76620 + scolonseen 2447,76661 +} structdef;2448,76715 +static const char *objtag objtag2453,76809 + dnone,2460,76942 + dsharpseen,2461,76972 + ddefineseen,2462,77025 + dignorerest 2463,77070 +} definedef;2464,77112 + onone,2472,77267 + oprotocol,2473,77297 + oimplementation,2474,77347 + otagseen,2475,77395 + oparenseen,2476,77431 + ocatseen,2477,77486 + oinbody,2478,77525 + omethodsign,2479,77568 + omethodtag,2480,77626 + omethodcolon,2481,77666 + omethodparm,2482,77709 + oignore 2483,77755 +} objdef;2484,77787 +static struct tok2491,77944 +} token;2508,78626 +} cstack;2523,79136 +#define nestlev 2525,79264 +#define instruct 2527,79369 +pushclass_above 2531,79489 +popclass_above 2550,79948 +write_classname 2564,80162 +consider_token 2613,81341 +} lbs[lbs2924,88532 +#define current_lb_is_new 2926,88543 +#define switch_line_buffers(2927,88588 +#define curlb 2929,88641 +#define newlb 2930,88672 +#define curlinepos 2931,88703 +#define newlinepos 2932,88744 +#define plainc 2934,88786 +#define cplpl 2935,88830 +#define cjava 2936,88861 +#define CNL_SAVE_DEFINEDEF(2938,88905 +#define CNL(2947,89117 +make_C_tag 2960,89375 +C_entries 2986,90194 +default_C_entries 3833,110156 +plain_C_entries 3840,110276 +Cplusplus_entries 3847,110364 +Cjava_entries 3854,110460 +Cstar_entries 3861,110550 +Yacc_entries 3868,110642 +#define LOOP_ON_INPUT_LINES(3875,110720 +#define LOOKING_AT(3884,111056 +#define LOOKING_AT_NOCASE(3891,111461 +just_read_file 3901,111861 +F_takeprec 3914,112039 +F_getit 3937,112366 +Fortran_functions 3961,112840 +Ada_getit 4052,114669 +Ada_funcs 4115,116044 +Asm_labels 4228,118582 +Perl_functions 4261,119549 +Python_functions 4357,122057 +PHP_functions 4387,122684 +Cobol_paragraphs 4466,124471 +Makefile_targets 4494,125029 +Pascal_functions 4529,125950 +L_getit 4709,130318 +Lisp_functions 4725,130664 +Lua_functions 4785,131850 +PS_functions 4811,132385 +Forth_words 4841,133053 +Scheme_functions 4877,134092 +static linebuffer *TEX_toktab TEX_toktab4908,134781 +static const char *TEX_defenv TEX_defenv4912,134974 +static char TEX_esc 4920,135261 +static char TEX_opgrp 4921,135289 +static char TEX_clgrp 4922,135318 +TeX_commands 4928,135395 +#define TEX_LESC 4986,136652 +#define TEX_SESC 4987,136674 +TEX_mode 4992,136804 +TEX_decode_env 5026,137509 +Texinfo_nodes 5071,138554 +HTML_labels 5094,139013 +Prolog_functions 5219,142347 +prolog_skip_comment 5255,143128 +prolog_pr 5281,143736 +prolog_atom 5319,144628 +Erlang_functions 5379,145666 +erlang_func 5438,146965 +erlang_attribute 5476,147642 +erlang_atom 5496,148061 +scan_separators 5534,149080 +analyze_regex 5586,150460 +add_regex 5654,152050 +substitute 5767,154797 +free_regexps 5814,155837 +regex_tag_multiline 5836,156291 +nocase_tail 5913,158263 +get_tag 5928,158519 +readline_internal 5959,159455 +readline 6037,161296 +savestr 6230,167243 +savenstr 6240,167473 +skip_spaces 6249,167679 +skip_non_spaces 6258,167833 +skip_name 6267,167983 +fatal 6277,168156 +pfatal 6284,168253 +suggest_asking_for_help 6291,168332 +error 6300,168554 +concat 6313,168846 +etags_getcwd 6329,169259 +relative_filename 6350,169725 +absolute_filename 6389,170751 +absolute_dirname 6453,172416 +filename_is_absolute 6472,172845 +canonicalize_filename 6484,173096 +# define ISUPPER(6491,173235 +linebuffer_init 6514,173656 +linebuffer_setlen 6524,173887 +xmalloc 6536,174148 +xrealloc 6545,174314 + +c-src/exit.c,47 + } __libc_atexit;30,1017 +DEFUN(exit,38,1258 + +c-src/exit.strange_suffix,47 + } __libc_atexit;30,1017 +DEFUN(exit,38,1258 + +c-src/sysdep.h,491 +#define ENTRY(21,870 +#define PSEUDO(26,977 + movl $SYS_##syscall_nam$SYS_##syscall_na31,1137 + movl $SYS_##syscall_name, %eax;eax31,1137 + int $0x80;32,1185 + test %eax,eax33,1215 + test %eax, %eax;eax33,1215 + jl syscall_error;34,1250 +#define XCHG_0 47,1567 +#define XCHG_1 48,1611 +#define XCHG_2 49,1653 +#define XCHG_3 50,1696 +#define XCHG_4 51,1739 +#define XCHG_5 52,1782 +#define r0 54,1826 +#define r1 55,1880 +#define scratch 56,1937 +#define MOVE(57,2006 + +c-src/tab.c,196 +static int count_words(15,263 +static char *get_word(get_word35,553 +void tab_free(59,966 +char **tab_fill(tab_fill70,1129 +int tab_delete_first(91,1638 +int tab_count_words(103,1820 + +c-src/dostorture.c,198 +(*tag1 tag118,468 +#define notag2 26,577 +(*tag2 tag229,657 +(*tag3 tag339,809 +#define notag4 45,904 +(*tag4 tag448,1001 +tag5 57,1136 +tag6 66,1272 +int pp1(74,1389 +pp287,1504 +pp3(100,1616 + +c-src/emacs/src/gmalloc.c,3539 +#define USE_PTHREAD25,1002 +#undef get_current_dir_name33,1126 +#undef malloc64,2110 +#undef realloc65,2124 +#undef calloc66,2139 +#undef free67,2153 +#define malloc 68,2165 +#define realloc 69,2188 +#define calloc 70,2213 +#define aligned_alloc 71,2236 +#define free 72,2273 +#define DUMPED 80,2472 +#define ALLOCATED_BEFORE_DUMPING(81,2507 +extern void *malloc malloc94,2718 +#define INT_BIT 124,3934 +#define BLOCKLOG 125,3977 +#define BLOCKSIZE 126,4018 +#define BLOCKIFY(127,4052 +#define HEAP 131,4215 +#define FINAL_FREE_BLOCKS 135,4391 + } malloc_info;167,5388 +#define BLOCK(176,5620 +#define ADDRESS(177,5682 +struct list186,5939 +struct alignlist196,6153 +#define LOCK(223,7064 +#define UNLOCK(228,7195 +#define LOCK_ALIGNED_BLOCKS(233,7329 +#define UNLOCK_ALIGNED_BLOCKS(238,7484 +#define LOCK(244,7649 +#define UNLOCK(245,7664 +#define LOCK_ALIGNED_BLOCKS(246,7681 +#define UNLOCK_ALIGNED_BLOCKS(247,7711 +enum mcheck_status283,9092 + MCHECK_DISABLED 285,9115 + MCHECK_OK,286,9187 + MCHECK_FREE,287,9226 + MCHECK_HEAD,288,9270 + MCHECK_TAIL 289,9334 +struct mstats308,10153 +char *_heapbase;_heapbase355,11829 +malloc_info *_heapinfo;_heapinfo358,11927 +static size_t heapsize;361,11983 +size_t _heapindex;364,12047 +size_t _heaplimit;367,12109 +struct list _fraghead[_fraghead370,12171 +size_t _chunks_used;373,12229 +size_t _bytes_used;374,12250 +size_t _chunks_free;375,12270 +size_t _bytes_free;376,12291 +int __malloc_initialized;379,12340 +size_t __malloc_extra_blocks;381,12367 +static int state_protected_p;400,12912 +static size_t last_state_size;401,12942 +static malloc_info *last_heapinfo;last_heapinfo402,12973 +protect_malloc_state 405,13014 +#define PROTECT_MALLOC_STATE(426,13627 +#define PROTECT_MALLOC_STATE(429,13697 +align 435,13794 +get_contiguous_space 466,14616 +register_heapinfo 497,15325 +pthread_mutex_t _malloc_mutex 517,15879 +pthread_mutex_t _aligned_blocks_mutex 518,15938 +int _malloc_thread_enabled_p;519,16005 +malloc_atfork_handler_prepare 522,16048 +malloc_atfork_handler_parent 529,16139 +malloc_atfork_handler_child 536,16233 +malloc_enable_thread 544,16375 +malloc_initialize_1 563,16961 +__malloc_initialize 594,17793 +static int morecore_recursing;604,17926 +morecore_nolock 609,18066 +_malloc_internal_nolock 722,21584 +_malloc_internal 920,28102 +malloc 932,28247 +_malloc 961,29140 +_free 967,29196 +_realloc 973,29240 +struct alignlist *_aligned_blocks _aligned_blocks1004,30345 +_free_internal_nolock 1009,30474 +_free_internal 1255,38476 +free 1265,38603 +weak_alias 1277,38799 +#define min(1306,39813 +_realloc_internal_nolock 1319,40309 +_realloc_internal 1435,43563 +realloc 1447,43726 +calloc 1478,44894 +#define __sbrk 1513,46042 +__default_morecore 1525,46511 +aligned_alloc 1557,47522 +memalign 1647,49704 +posix_memalign 1656,49909 +static size_t pagesize;1703,51317 +valloc 1706,51349 +#undef malloc1715,51490 +#undef realloc1716,51504 +#undef calloc1717,51519 +#undef aligned_alloc1718,51533 +#undef free1719,51554 +hybrid_malloc 1736,52083 +hybrid_calloc 1744,52188 +hybrid_free 1752,52319 +hybrid_aligned_alloc 1765,52626 +hybrid_realloc 1780,52984 +hybrid_get_current_dir_name 1811,53797 +#define MAGICWORD 1854,55206 +#define MAGICFREE 1855,55261 +#define MAGICBYTE 1856,55316 +#define MALLOCFLOOD 1857,55348 +#define FREEFLOOD 1858,55382 +struct hdr1860,55415 +checkhdr 1867,55581 +freehook 1891,56022 +mallochook 1927,56804 +reallochook 1944,57143 +mabort 1978,57901 +static int mcheck_used 2012,58586 +mcheck 2015,58619 +mprobe 2035,59138 + +c-src/emacs/src/regex.h,3761 +#define _REGEX_H 21,836 +typedef unsigned long reg_syntax_t;43,1577 +#define RE_BACKSLASH_ESCAPE_IN_LISTS 47,1749 +#define RE_BK_PLUS_QM 52,1969 +#define RE_CHAR_CLASSES 58,2298 +#define RE_CONTEXT_INDEP_ANCHORS 72,3032 +#define RE_CONTEXT_INDEP_OPS 80,3458 +#define RE_CONTEXT_INVALID_OPS 84,3658 +#define RE_DOT_NEWLINE 88,3801 +#define RE_DOT_NOT_NULL 92,3937 +#define RE_HAT_LISTS_NOT_NEWLINE 96,4082 +#define RE_INTERVALS 101,4292 +#define RE_LIMITED_OPS 105,4441 +#define RE_NEWLINE_ALT 109,4583 +#define RE_NO_BK_BRACES 114,4773 +#define RE_NO_BK_PARENS 118,4964 +#define RE_NO_BK_REFS 122,5120 +#define RE_NO_BK_VBAR 126,5316 +#define RE_NO_EMPTY_RANGES 132,5610 +#define RE_UNMATCHED_RIGHT_PAREN_ORD 136,5766 +#define RE_NO_POSIX_BACKTRACKING 140,5937 +#define RE_NO_GNU_OPS 144,6133 +#define RE_FRUGAL 147,6253 +#define RE_SHY_GROUPS 150,6360 +#define RE_NO_NEWLINE_ANCHOR 153,6468 +#define RE_DEBUG 161,6884 +#define RE_SYNTAX_EMACS 183,7684 +#define RE_SYNTAX_AWK 186,7780 +#define RE_SYNTAX_GNU_AWK 193,8084 +#define RE_SYNTAX_POSIX_AWK 197,8255 +#define RE_SYNTAX_GREP 201,8393 +#define RE_SYNTAX_EGREP 206,8549 +#define RE_SYNTAX_POSIX_EGREP 212,8765 +#define RE_SYNTAX_ED 216,8910 +#define RE_SYNTAX_SED 218,8954 +#define _RE_SYNTAX_POSIX_COMMON 221,9072 +#define RE_SYNTAX_POSIX_BASIC 225,9215 +#define RE_SYNTAX_POSIX_MINIMAL_BASIC 231,9508 +#define RE_SYNTAX_POSIX_EXTENDED 234,9598 +#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED 242,9967 +# undef RE_DUP_MAX253,10454 +#define RE_DUP_MAX 256,10540 +#define REG_EXTENDED 263,10762 +#define REG_ICASE 267,10886 +#define REG_NEWLINE 272,11070 +#define REG_NOSUB 276,11248 +#define REG_NOTBOL 286,11614 +#define REG_NOTEOL 289,11688 + REG_ENOSYS 297,11859 + REG_NOERROR 300,11941 + REG_NOMATCH,301,11976 + REG_BADPAT,305,12123 + REG_ECOLLATE,306,12162 + REG_ECTYPE,307,12203 + REG_EESCAPE,308,12255 + REG_ESUBREG,309,12298 + REG_EBRACK,310,12345 + REG_EPAREN,311,12391 + REG_EBRACE,312,12436 + REG_BADBR,313,12472 + REG_ERANGE,314,12519 + REG_ESPACE,315,12560 + REG_BADRPT,316,12601 + REG_EEND,319,12693 + REG_ESIZE,320,12728 + REG_ERPAREN,321,12790 + REG_ERANGEX 322,12859 +} reg_errcode_t;323,12911 +# define RE_TRANSLATE_TYPE 332,13273 +struct re_pattern_buffer335,13315 +#define REGS_UNALLOCATED 376,14889 +#define REGS_REALLOCATE 377,14916 +#define REGS_FIXED 378,14942 +typedef struct re_pattern_buffer regex_t;416,16098 +typedef ssize_t regoff_t;423,16492 +struct re_registers428,16652 +# define RE_NREGS 440,16942 +} regmatch_t;451,17317 +# define _Restrict_ 540,20886 +# define _Restrict_ 542,20979 +# define _Restrict_544,21018 +# define _Restrict_arr_ 555,21418 +# define _Restrict_arr_557,21461 +# define CHAR_CLASS_MAX_LENGTH 593,22470 +# define CHAR_CLASS_MAX_LENGTH 597,22648 +typedef wctype_t re_wctype_t;599,22692 +typedef wchar_t re_wchar_t;600,22722 +# define re_wctype 601,22750 +# define re_iswctype 602,22776 +# define re_wctype_to_bit(603,22806 +# define CHAR_CLASS_MAX_LENGTH 605,22844 +# define btowc(606,22906 +typedef enum { RECC_ERROR 609,22953 + RECC_ALNUM,610,22984 + RECC_ALNUM, RECC_ALPHA,610,22984 + RECC_ALNUM, RECC_ALPHA, RECC_WORD,610,22984 + RECC_GRAPH,611,23027 + RECC_GRAPH, RECC_PRINT,611,23027 + RECC_LOWER,612,23059 + RECC_LOWER, RECC_UPPER,612,23059 + RECC_PUNCT,613,23091 + RECC_PUNCT, RECC_CNTRL,613,23091 + RECC_DIGIT,614,23123 + RECC_DIGIT, RECC_XDIGIT,614,23123 + RECC_BLANK,615,23156 + RECC_BLANK, RECC_SPACE,615,23156 + RECC_MULTIBYTE,616,23188 + RECC_MULTIBYTE, RECC_NONASCII,616,23188 + RECC_ASCII,617,23227 + RECC_ASCII, RECC_UNIBYTE617,23227 +} re_wctype_t;618,23260 +typedef int re_wchar_t;623,23387 + +c-src/emacs/src/keyboard.c,20957 +volatile int interrupt_input_blocked;76,1808 +volatile bool pending_signals;80,1944 +#define KBD_BUFFER_SIZE 82,1976 +KBOARD *initial_kboard;initial_kboard84,2006 +KBOARD *current_kboard;current_kboard85,2030 +static KBOARD *all_kboards;all_kboards86,2054 +static bool single_kboard;89,2154 +#define NUM_RECENT_KEYS 91,2182 +static int recent_keys_index;94,2269 +static int total_keys;97,2357 +static Lisp_Object recent_keys;100,2443 +Lisp_Object this_command_keys;107,2777 +ptrdiff_t this_command_key_count;108,2808 +static bool this_command_key_count_reset;112,2922 +static Lisp_Object raw_keybuf;116,3074 +static int raw_keybuf_count;117,3105 +#define GROW_RAW_KEYBUF 119,3135 +static ptrdiff_t this_single_command_key_start;125,3350 +static ptrdiff_t before_command_key_count;129,3498 +static ptrdiff_t before_command_echo_length;130,3541 +sigjmp_buf return_to_command_loop;135,3677 +static Lisp_Object recover_top_level_message;138,3791 +static Lisp_Object regular_top_level_message;143,3930 +static sys_jmp_buf getcjmp;147,4031 +bool waiting_for_input;150,4095 +static bool echoing;154,4186 +static struct kboard *ok_to_echo_at_next_pause;ok_to_echo_at_next_pause159,4328 +struct kboard *echo_kboard;echo_kboard166,4632 +Lisp_Object echo_message_buffer;171,4744 +bool immediate_quit;174,4837 +int quit_char;192,5623 +EMACS_INT command_loop_level;195,5680 +Lisp_Object unread_switch_frame;204,6108 +static ptrdiff_t last_non_minibuf_size;207,6216 +uintmax_t num_input_events;210,6334 +static EMACS_INT last_auto_save;214,6428 +static ptrdiff_t last_point_position;217,6523 +Lisp_Object internal_last_event_frame;228,7028 +static Lisp_Object read_key_sequence_cmd;232,7168 +static Lisp_Object read_key_sequence_remapped;233,7210 +static FILE *dribble;dribble236,7310 +bool input_pending;239,7368 +static bool input_was_pending;287,10022 +static struct input_event kbd_buffer[kbd_buffer291,10107 +static struct input_event *kbd_fetch_ptr;kbd_fetch_ptr297,10386 +static struct input_event * volatile kbd_store_ptr;302,10601 +unsigned timers_run;320,11296 +struct timespec *input_available_clear_time;input_available_clear_time324,11408 +bool interrupt_input;328,11573 +bool interrupts_deferred;331,11671 +static struct timespec timer_idleness_start_time;335,11746 +static struct timespec timer_last_idleness_start_time;340,11916 +#define READABLE_EVENTS_DO_TIMERS_NOW 346,12046 +#define READABLE_EVENTS_FILTER_EVENTS 347,12094 +#define READABLE_EVENTS_IGNORE_SQUEEZABLES 348,12142 +kset_echo_string 392,14088 +kset_kbd_queue 397,14184 +kset_keyboard_translate_table 402,14276 +kset_last_prefix_arg 407,14399 +kset_last_repeatable_command 412,14504 +kset_local_function_key_map 417,14625 +kset_overriding_terminal_local_map 422,14744 +kset_real_last_command 427,14877 +kset_system_key_syms 432,14986 +echo_add_key 443,15249 +echo_char 527,17527 +echo_dash 541,17813 +echo_now 586,19140 +cancel_echoing 635,20614 +echo_length 648,20922 +echo_truncate 660,21253 +add_command_key 672,21582 +recursive_edit_1 697,22406 +record_auto_save 742,23848 +force_auto_save_soon 751,24016 +DEFUN ("recursive-edit", Frecursive_edit,recursive-edit759,24137 +recursive_edit_unwind 804,25747 +any_kboard_state 817,26013 +single_kboard_state 838,26665 +not_single_kboard_state 848,26803 +struct kboard_stack858,27065 +static struct kboard_stack *kboard_stack;kboard_stack864,27138 +push_kboard 867,27186 +pop_kboard 879,27375 +temporarily_switch_to_single_kboard 914,28263 +record_single_kboard_state 943,29437 +restore_kboard_configuration 952,29621 +cmd_error 970,30077 +cmd_error_internal 1024,31510 +DEFUN ("command-error-default-function", Fcommand_error_default_function,command-error-default-function1043,32030 +command_loop 1094,33916 +command_loop_2 1134,35135 +top_level_2 1146,35339 +top_level_1 1152,35417 +DEFUN ("top-level", Ftop_level,top-level1164,35787 +user_error 1183,36288 +DEFUN ("exit-recursive-edit", Fexit_recursive_edit,exit-recursive-edit1189,36429 +DEFUN ("abort-recursive-edit", Fabort_recursive_edit,abort-recursive-edit1201,36819 +tracking_off 1216,37281 +DEFUN ("internal--track-mouse", Ftrack_mouse,track-mouse1234,37816 +bool ignore_mouse_drag_p;1256,38392 +some_mouse_moved 1259,38441 +Lisp_Object last_undo_boundary;1287,39032 +command_loop_1 1294,39273 +read_menu_command 1649,50889 +adjust_point_for_property 1678,51617 +safe_run_hooks_1 1831,57339 +safe_run_hooks_error 1841,57569 +safe_run_hook_funcall 1878,58576 +safe_run_hooks 1893,59058 +int poll_suppress_count;1908,59397 +static struct atimer *poll_timer;poll_timer1915,59487 +poll_for_input_1 1919,59589 +poll_for_input 1930,59789 +start_polling 1942,60053 +input_polling_used 1979,61091 +stop_polling 1994,61390 +set_poll_suppress_count 2009,61759 +bind_polling_period 2029,62141 +make_ctrl_char 2048,62492 +show_help_echo 2113,64455 +static Lisp_Object help_form_saved_window_configs;2156,65638 +read_char_help_form_unwind 2158,65701 +#define STOP_POLLING 2166,65959 +#define RESUME_POLLING 2170,66084 +read_event_from_main_queue 2175,66229 +read_decoded_event_from_main_queue 2249,68417 +#define MAX_ENCODED_BYTES 2254,68664 +echo_keystrokes_p 2342,71556 +read_char 2376,72848 +record_menu_key 3225,98949 +help_char_p 3258,99674 +record_char 3273,99953 +save_getcjmp 3412,104235 +restore_getcjmp 3418,104326 +readable_events 3430,104697 +int stop_character EXTERNALLY_VISIBLE;3497,106437 +event_to_kboard 3500,106493 +kbd_buffer_nr_stored 3522,107142 +kbd_buffer_store_event 3534,107483 +kbd_buffer_store_event_hold 3550,108025 +kbd_buffer_unget_event 3684,111617 +#define INPUT_EVENT_POS_MAX 3698,112018 +#define INPUT_EVENT_POS_MIN 3701,112147 +position_to_Time 3706,112287 +Time_to_position 3716,112514 +gen_help_event 3738,113171 +kbd_buffer_store_help_event 3756,113611 +discard_mouse_events 3773,113976 +kbd_buffer_events_waiting 3803,114711 +clear_event 3823,115068 +kbd_buffer_get_event 3836,115408 +process_special_events 4258,127881 +swallow_events 4322,129705 +timer_start_idle 4339,130098 +timer_stop_idle 4355,130576 +timer_resume_idle 4363,130720 +struct input_event last_timer_event EXTERNALLY_VISIBLE;4372,130912 +Lisp_Object pending_funcalls;4377,131172 +decode_timer 4381,131293 +timer_check_2 4414,132246 +timer_check 4572,136817 +DEFUN ("current-idle-time", Fcurrent_idle_time,current-idle-time4607,137662 +static Lisp_Object accent_key_syms;4625,138239 +static Lisp_Object func_key_syms;4626,138275 +static Lisp_Object mouse_syms;4627,138309 +static Lisp_Object wheel_syms;4628,138340 +static Lisp_Object drag_n_drop_syms;4629,138371 +static const int lispy_accent_codes[lispy_accent_codes4634,138516 +static const char *const lispy_accent_keys[lispy_accent_keys4741,139878 +#define FUNCTION_KEY_OFFSET 4766,140314 +const char *const lispy_function_keys[lispy_function_keys4768,140347 +static const char *const lispy_multimedia_keys[lispy_multimedia_keys4962,148901 +static const char *const lispy_kana_keys[lispy_kana_keys5026,150135 +#define FUNCTION_KEY_OFFSET 5061,151751 +static const char *const lispy_function_keys[lispy_function_keys5065,151894 +#define ISO_FUNCTION_KEY_OFFSET 5149,154429 +static const char *const iso_lispy_function_keys[iso_lispy_function_keys5151,154469 +static Lisp_Object Vlispy_mouse_stem;5172,155328 +static const char *const lispy_wheel_names[lispy_wheel_names5174,155367 +static const char *const lispy_drag_n_drop_names[lispy_drag_n_drop_names5181,155619 +static short const scroll_bar_parts[scroll_bar_parts5189,155885 +static Lisp_Object button_down_location;5210,156910 +static int last_mouse_button;5215,157065 +static int last_mouse_x;5216,157095 +static int last_mouse_y;5217,157120 +static Time button_down_time;5218,157145 +static int double_click_count;5222,157229 +make_lispy_position 5228,157390 +toolkit_menubar_in_use 5456,163953 +make_scroll_bar_position 5469,164321 +make_lispy_event 5485,164967 +make_lispy_movement 6104,183531 +make_lispy_switch_frame 6131,184262 +make_lispy_focus_in 6137,184369 +make_lispy_focus_out 6145,184495 +parse_modifiers_uncached 6163,184945 +#define SINGLE_LETTER_MOD(6185,185465 +#undef SINGLE_LETTER_MOD6212,185906 +#define MULTI_LETTER_MOD(6214,185932 +#undef MULTI_LETTER_MOD6231,186400 +apply_modifiers_uncached 6273,187574 +static const char *const modifier_names[modifier_names6319,189193 +#define NUM_MOD_NAMES 6325,189399 +static Lisp_Object modifier_symbols;6327,189449 +lispy_modifier_list 6331,189586 +#define KEY_TO_CHAR(6353,190252 +parse_modifiers 6356,190328 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517 +apply_modifiers 6422,192391 +reorder_modifiers 6491,194720 +modify_event_symbol 6536,196528 +DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199244 +parse_solitary_modifier 6695,201135 +#define SINGLE_LETTER_MOD(6701,201258 +#define MULTI_LETTER_MOD(6705,201343 +#undef SINGLE_LETTER_MOD6763,202641 +#undef MULTI_LETTER_MOD6764,202666 +lucid_event_type_list_p 6775,202889 +get_input_pending 6814,203960 +record_asynch_buffer_change 6834,204579 +gobble_input 6872,205702 +tty_read_avail_input 6967,208310 +handle_async_input 7149,214039 +process_pending_signals 7165,214359 +unblock_input_to 7177,214645 +unblock_input 7200,215277 +totally_unblock_input 7209,215445 +handle_input_available_signal 7217,215529 +deliver_input_available_signal 7226,215700 +struct user_signal_info7235,215865 +static struct user_signal_info *user_signals user_signals7250,216090 +add_user_signal 7253,216149 +handle_user_signal 7275,216598 +deliver_user_signal 7316,217558 +find_user_signal_name 7322,217659 +store_user_signal_events 7334,217841 +static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416 +static Lisp_Object menu_bar_items_vector;7368,218630 +static int menu_bar_items_index;7369,218672 +static const char *separator_names[separator_names7372,218707 +menu_separator_name_p 7393,219148 +menu_bar_items 7426,219852 +Lisp_Object item_properties;7568,224603 +menu_bar_item 7571,224645 +menu_item_eval_property_1 7647,227175 +eval_dyn 7658,227465 +menu_item_eval_property 7666,227675 +parse_menu_item 7686,228341 +static Lisp_Object tool_bar_items_vector;7965,236336 +static Lisp_Object tool_bar_item_properties;7970,236510 +static int ntool_bar_items;7974,236606 +tool_bar_items 7990,237083 +process_tool_bar_item 8075,239892 +#define PROP(8112,240969 +set_prop 8114,241038 +parse_tool_bar_item 8167,242453 +#undef PROP8379,248844 +init_tool_bar_items 8387,248969 +append_tool_bar_item 8401,249261 +read_char_x_menu_prompt 8443,250771 +read_char_minibuf_menu_prompt 8503,252445 +#define PUSH_C_STR(8527,253014 +follow_key 8726,258553 +active_maps 8733,258695 +typedef struct keyremap8742,259021 +} keyremap;8754,259464 +access_keymap_keyremap 8764,259808 +keyremap_step 8811,261450 +test_undefined 8867,262934 +read_key_sequence 8916,264861 +read_key_sequence_vs 9826,295821 +DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299982 +detect_input_pending 9950,300488 +detect_input_pending_ignore_squeezables 9959,300654 +detect_input_pending_run_timers 9967,300870 +clear_input_pending 9985,301362 +requeued_events_pending_p 9997,301732 +DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813 +DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596 +DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303958 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304380 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305495 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306510 +DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069 +DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406 +DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447 +DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949 +stuff_buffered_input 10285,311045 +set_waiting_for_input 10323,312016 +clear_waiting_for_input 10337,312390 +handle_interrupt_signal 10351,312754 +deliver_interrupt_signal 10378,313642 +static int volatile force_quit_count;10387,313932 +handle_interrupt 10401,314414 +quit_throw_to_read_char 10541,318711 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288 +DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320516 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321432 +DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706 +DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570 +DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324459 +DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837 +DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060 +init_kboard 10861,328214 +allocate_kboard 10893,329284 +wipe_kboard 10909,329637 +delete_kboard 10917,329751 +init_keyboard 10942,330281 +struct event_head11021,332696 +static const struct event_head head_table[head_table11027,332747 +syms_of_keyboard 11045,333577 + DEFVAR_LISP ("internal--top-level-message"11058,333972 + DEFVAR_LISP ("last-command-event"11312,342173 + DEFVAR_LISP ("last-nonmenu-event"11315,342297 + DEFVAR_LISP ("last-input-event"11321,342636 + DEFVAR_LISP ("unread-command-events"11324,342730 + DEFVAR_LISP ("unread-post-input-method-events"11332,343190 + DEFVAR_LISP ("unread-input-method-events"11338,343529 + DEFVAR_LISP ("meta-prefix-char"11346,343898 + DEFVAR_KBOARD ("last-command"11351,344106 + DEFVAR_KBOARD ("real-last-command"11368,344787 + DEFVAR_KBOARD ("last-repeatable-command"11372,344973 + DEFVAR_LISP ("this-command"11378,345261 + DEFVAR_LISP ("real-this-command"11384,345498 + DEFVAR_LISP ("this-command-keys-shift-translated"11388,345680 + DEFVAR_LISP ("this-original-command"11396,346123 + DEFVAR_INT ("auto-save-interval"11403,346520 + DEFVAR_LISP ("auto-save-timeout"11408,346734 + DEFVAR_LISP ("echo-keystrokes"11415,347079 + DEFVAR_INT ("polling-period"11421,347350 + DEFVAR_LISP ("double-click-time"11428,347693 + DEFVAR_INT ("double-click-fuzz"11435,348029 + DEFVAR_INT ("num-input-keys"11446,348519 + DEFVAR_INT ("num-nonmacro-input-events"11452,348794 + DEFVAR_LISP ("last-event-frame"11457,349032 + DEFVAR_LISP ("tty-erase-char"11463,349311 + DEFVAR_LISP ("help-char"11466,349434 + DEFVAR_LISP ("help-event-list"11472,349717 + DEFVAR_LISP ("help-form"11477,349928 + DEFVAR_LISP ("prefix-help-command"11483,350176 + DEFVAR_LISP ("top-level"11489,350454 + DEFVAR_KBOARD ("keyboard-translate-table"11495,350675 + DEFVAR_BOOL ("cannot-suspend"11511,351488 + DEFVAR_BOOL ("menu-prompting"11516,351715 + DEFVAR_LISP ("menu-prompt-more-char"11526,352145 + DEFVAR_INT ("extra-keyboard-modifiers"11531,352391 + DEFVAR_LISP ("deactivate-mark"11545,353117 + DEFVAR_LISP ("pre-command-hook"11553,353486 + DEFVAR_LISP ("post-command-hook"11560,353841 + DEFVAR_LISP ("echo-area-clear-hook"11568,354204 + DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354419 + DEFVAR_LISP ("menu-bar-final-items"11578,354622 + DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354872 + DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355230 + DEFVAR_LISP ("overriding-local-map"11598,355652 + DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356103 + DEFVAR_LISP ("special-event-map"11613,356442 + DEFVAR_LISP ("track-mouse"11617,356630 + DEFVAR_KBOARD ("system-key-alist"11620,356757 + DEFVAR_KBOARD ("local-function-key-map"11629,357138 + DEFVAR_KBOARD ("input-decode-map"11658,358597 + DEFVAR_LISP ("function-key-map"11675,359385 + DEFVAR_LISP ("key-translation-map"11683,359801 + DEFVAR_LISP ("deferred-action-list"11689,360145 + DEFVAR_LISP ("deferred-action-function"11694,360393 + DEFVAR_LISP ("delayed-warnings-list"11700,360692 + DEFVAR_LISP ("timer-list"11708,361100 + DEFVAR_LISP ("timer-idle-list"11712,361252 + DEFVAR_LISP ("input-method-function"11716,361415 + DEFVAR_LISP ("input-method-previous-message"11737,362384 + DEFVAR_LISP ("show-help-function"11744,362745 + DEFVAR_LISP ("disable-point-adjustment"11749,362977 + DEFVAR_LISP ("global-disable-point-adjustment"11761,363527 + DEFVAR_LISP ("minibuffer-message-timeout"11770,363893 + DEFVAR_LISP ("throw-on-input"11775,364171 + DEFVAR_LISP ("command-error-function"11781,364422 + DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364909 + DEFVAR_LISP ("select-active-regions"11798,365236 + DEFVAR_LISP ("saved-region-selection"11807,365628 + DEFVAR_LISP ("selection-inhibit-update-commands"11815,366013 + DEFVAR_LISP ("debug-on-event"11825,366554 +keys_of_keyboard 11841,367115 +mark_kboards 11916,370434 + DEFVAR_LISP ("internal--top-level-message",\111058,333972 + DEFVAR_LISP ("last-command-event",\111312,342173 + DEFVAR_LISP ("last-nonmenu-event",\111315,342297 + DEFVAR_LISP ("last-input-event",\111321,342636 + DEFVAR_LISP ("unread-command-events",\111324,342730 + DEFVAR_LISP ("unread-post-input-method-events",\111332,343190 + DEFVAR_LISP ("unread-input-method-events",\111338,343529 + DEFVAR_LISP ("meta-prefix-char",\111346,343898 + DEFVAR_KBOARD ("last-command",\111351,344106 + DEFVAR_KBOARD ("real-last-command",\111368,344787 + DEFVAR_KBOARD ("last-repeatable-command",\111372,344973 + DEFVAR_LISP ("this-command",\111378,345261 + DEFVAR_LISP ("real-this-command",\111384,345498 + DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345680 + DEFVAR_LISP ("this-original-command",\111396,346123 + DEFVAR_INT ("auto-save-interval",\111403,346520 + DEFVAR_LISP ("auto-save-timeout",\111408,346734 + DEFVAR_LISP ("echo-keystrokes",\111415,347079 + DEFVAR_INT ("polling-period",\111421,347350 + DEFVAR_LISP ("double-click-time",\111428,347693 + DEFVAR_INT ("double-click-fuzz",\111435,348029 + DEFVAR_INT ("num-input-keys",\111446,348519 + DEFVAR_INT ("num-nonmacro-input-events",\111452,348794 + DEFVAR_LISP ("last-event-frame",\111457,349032 + DEFVAR_LISP ("tty-erase-char",\111463,349311 + DEFVAR_LISP ("help-char",\111466,349434 + DEFVAR_LISP ("help-event-list",\111472,349717 + DEFVAR_LISP ("help-form",\111477,349928 + DEFVAR_LISP ("prefix-help-command",\111483,350176 + DEFVAR_LISP ("top-level",\111489,350454 + DEFVAR_KBOARD ("keyboard-translate-table",\111495,350675 + DEFVAR_BOOL ("cannot-suspend",\111511,351488 + DEFVAR_BOOL ("menu-prompting",\111516,351715 + DEFVAR_LISP ("menu-prompt-more-char",\111526,352145 + DEFVAR_INT ("extra-keyboard-modifiers",\111531,352391 + DEFVAR_LISP ("deactivate-mark",\111545,353117 + DEFVAR_LISP ("pre-command-hook",\111553,353486 + DEFVAR_LISP ("post-command-hook",\111560,353841 + DEFVAR_LISP ("echo-area-clear-hook",\111568,354204 + DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354419 + DEFVAR_LISP ("menu-bar-final-items",\111578,354622 + DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354872 + DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355230 + DEFVAR_LISP ("overriding-local-map",\111598,355652 + DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356103 + DEFVAR_LISP ("special-event-map",\111613,356442 + DEFVAR_LISP ("track-mouse",\111617,356630 + DEFVAR_KBOARD ("system-key-alist",\111620,356757 + DEFVAR_KBOARD ("local-function-key-map",\111629,357138 + DEFVAR_KBOARD ("input-decode-map",\111658,358597 + DEFVAR_LISP ("function-key-map",\111675,359385 + DEFVAR_LISP ("key-translation-map",\111683,359801 + DEFVAR_LISP ("deferred-action-list",\111689,360145 + DEFVAR_LISP ("deferred-action-function",\111694,360393 + DEFVAR_LISP ("delayed-warnings-list",\111700,360692 + DEFVAR_LISP ("timer-list",\111708,361100 + DEFVAR_LISP ("timer-idle-list",\111712,361252 + DEFVAR_LISP ("input-method-function",\111716,361415 + DEFVAR_LISP ("input-method-previous-message",\111737,362384 + DEFVAR_LISP ("show-help-function",\111744,362745 + DEFVAR_LISP ("disable-point-adjustment",\111749,362977 + DEFVAR_LISP ("global-disable-point-adjustment",\111761,363527 + DEFVAR_LISP ("minibuffer-message-timeout",\111770,363893 + DEFVAR_LISP ("throw-on-input",\111775,364171 + DEFVAR_LISP ("command-error-function",\111781,364422 + DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364909 + DEFVAR_LISP ("select-active-regions",\111798,365236 + DEFVAR_LISP ("saved-region-selection",\111807,365628 + DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366013 + DEFVAR_LISP ("debug-on-event",\111825,366554 + +c-src/emacs/src/lisp.h,20567 +#define EMACS_LISP_H22,800 +#define DECLARE_GDB_SYM(47,1421 +# define DEFINE_GDB_SYMBOL_BEGIN(49,1508 +# define DEFINE_GDB_SYMBOL_END(50,1578 +# define DEFINE_GDB_SYMBOL_BEGIN(52,1625 +# define DEFINE_GDB_SYMBOL_END(53,1702 +#undef min57,1790 +#undef max58,1801 +#define max(59,1812 +#define min(60,1854 +#define ARRAYELTS(63,1936 +#define GCTYPEBITS 67,2079 +DEFINE_GDB_SYMBOL_BEGIN GCTYPEBITS66,2037 +# define NONPOINTER_BITS 78,2567 +# define NONPOINTER_BITS 80,2600 +typedef int EMACS_INT;91,3023 +typedef unsigned int EMACS_UINT;92,3046 +# define EMACS_INT_MAX 93,3079 +# define pI 94,3111 +typedef long int EMACS_INT;96,3203 +typedef unsigned long EMACS_UINT;97,3231 +# define EMACS_INT_MAX 98,3265 +# define pI 99,3298 +typedef long long int EMACS_INT;103,3477 +typedef unsigned long long int EMACS_UINT;104,3510 +# define EMACS_INT_MAX 105,3553 +# define pI 106,3587 +enum { BOOL_VECTOR_BITS_PER_CHAR 114,3804 +#define BOOL_VECTOR_BITS_PER_CHAR 115,3840 +typedef size_t bits_word;123,4165 +# define BITS_WORD_MAX 124,4191 +enum { BITS_PER_BITS_WORD 125,4223 +typedef unsigned char bits_word;127,4290 +# define BITS_WORD_MAX 128,4323 +enum { BITS_PER_BITS_WORD 129,4386 + BITS_PER_CHAR 136,4570 + BITS_PER_SHORT 137,4605 + BITS_PER_LONG 138,4657 + BITS_PER_EMACS_INT 139,4712 +typedef intmax_t printmax_t;148,5089 +typedef uintmax_t uprintmax_t;149,5118 +# define pMd 150,5149 +# define pMu 151,5170 +typedef EMACS_INT printmax_t;153,5197 +typedef EMACS_UINT uprintmax_t;154,5227 +# define pMd 155,5259 +# define pMu 156,5278 +# define pD 165,5664 +# define pD 167,5709 +# define pD 169,5756 +# define pD 171,5779 +# define eassert(200,7062 +# define eassume(201,7140 +# define eassert(208,7319 +# define eassume(212,7450 +enum Lisp_Bits239,8519 +#define GCALIGNMENT 243,8647 + VALBITS 246,8742 + INTTYPEBITS 249,8838 + FIXNUM_BITS 252,8945 +#define VAL_MAX 263,9327 +#define USE_LSB_TAG 271,9777 +DEFINE_GDB_SYMBOL_BEGIN USE_LSB_TAG270,9733 +# define alignas(281,10077 +# define GCALIGNED 288,10227 +# define GCALIGNED 290,10292 +# define lisp_h_XLI(327,11642 +# define lisp_h_XIL(328,11673 +# define lisp_h_XLI(330,11724 +# define lisp_h_XIL(331,11751 +#define lisp_h_CHECK_LIST_CONS(333,11785 +#define lisp_h_CHECK_NUMBER(334,11856 +#define lisp_h_CHECK_SYMBOL(335,11927 +#define lisp_h_CHECK_TYPE(336,11996 +#define lisp_h_CONSP(338,12107 +#define lisp_h_EQ(339,12156 +#define lisp_h_FLOATP(340,12201 +#define lisp_h_INTEGERP(341,12252 +#define lisp_h_MARKERP(342,12333 +#define lisp_h_MISCP(343,12408 +#define lisp_h_NILP(344,12457 +#define lisp_h_SET_SYMBOL_VAL(345,12493 +#define lisp_h_SYMBOL_CONSTANT_P(347,12607 +#define lisp_h_SYMBOL_VAL(348,12671 +#define lisp_h_SYMBOLP(350,12772 +#define lisp_h_VECTORLIKEP(351,12825 +#define lisp_h_XCAR(352,12886 +#define lisp_h_XCDR(353,12924 +#define lisp_h_XCONS(354,12964 +#define lisp_h_XHASH(356,13059 +#define lisp_h_XPNTR(357,13093 +# define lisp_h_check_cons_list(360,13221 +# define lisp_h_make_number(363,13289 +# define lisp_h_XFASTINT(365,13392 +# define lisp_h_XINT(366,13429 +# define lisp_h_XSYMBOL(367,13478 +# define lisp_h_XTYPE(371,13631 +# define lisp_h_XUNTAG(372,13696 +# define XLI(381,14086 +# define XIL(382,14117 +# define CHECK_LIST_CONS(383,14148 +# define CHECK_NUMBER(384,14209 +# define CHECK_SYMBOL(385,14258 +# define CHECK_TYPE(386,14307 +# define CONSP(387,14382 +# define EQ(388,14417 +# define FLOATP(389,14452 +# define INTEGERP(390,14489 +# define MARKERP(391,14530 +# define MISCP(392,14569 +# define NILP(393,14604 +# define SET_SYMBOL_VAL(394,14637 +# define SYMBOL_CONSTANT_P(395,14700 +# define SYMBOL_VAL(396,14763 +# define SYMBOLP(397,14812 +# define VECTORLIKEP(398,14851 +# define XCAR(399,14898 +# define XCDR(400,14931 +# define XCONS(401,14964 +# define XHASH(402,14999 +# define XPNTR(403,15034 +# define check_cons_list(405,15097 +# define make_number(408,15176 +# define XFASTINT(409,15224 +# define XINT(410,15266 +# define XSYMBOL(411,15300 +# define XTYPE(412,15340 +# define XUNTAG(413,15376 +#define LISP_MACRO_DEFUN(421,15672 +#define LISP_MACRO_DEFUN_VOID(425,15845 +#define INTMASK 437,16289 +#define case_Lisp_Int 438,16342 +#define ENUM_BF(445,16681 +#define ENUM_BF(447,16722 +enum Lisp_Type451,16763 + Lisp_Symbol 454,16851 + Lisp_Misc 458,16993 + Lisp_Int0 461,17067 + Lisp_Int1 462,17086 + Lisp_String 466,17264 + Lisp_Vectorlike 472,17543 + Lisp_Cons 475,17632 + Lisp_Float 477,17670 +enum Lisp_Misc_Type485,18016 + Lisp_Misc_Free 487,18040 + Lisp_Misc_Marker,488,18069 + Lisp_Misc_Overlay,489,18091 + Lisp_Misc_Save_Value,490,18114 + Lisp_Misc_Finalizer,491,18140 + Lisp_Misc_Float,494,18275 + Lisp_Misc_Limit496,18359 +enum Lisp_Fwd_Type502,18543 + Lisp_Fwd_Int,504,18566 + Lisp_Fwd_Bool,505,18619 + Lisp_Fwd_Obj,506,18670 + Lisp_Fwd_Buffer_Obj,507,18729 + Lisp_Fwd_Kboard_Obj 508,18800 +typedef struct { EMACS_INT i; } Lisp_Object;567,21781 +#define LISP_INITIALLY(569,21827 +#undef CHECK_LISP_OBJECT_TYPE571,21858 +enum CHECK_LISP_OBJECT_TYPE 572,21888 +enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 572,21888 +typedef EMACS_INT Lisp_Object;577,22064 +#define LISP_INITIALLY(578,22095 +enum CHECK_LISP_OBJECT_TYPE 579,22125 +enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 579,22125 +#define LISP_INITIALLY_ZERO 582,22226 +enum symbol_interned639,24199 + SYMBOL_UNINTERNED 641,24222 + SYMBOL_INTERNED 642,24247 + SYMBOL_INTERNED_IN_INITIAL_OBARRAY 643,24270 +enum symbol_redirect646,24315 + SYMBOL_PLAINVAL 648,24338 + SYMBOL_VARALIAS 649,24362 + SYMBOL_LOCALIZED 650,24386 + SYMBOL_FORWARDED 651,24410 +struct Lisp_Symbol654,24437 + ENUM_BF 663,24793 +#define EXFUN(707,26252 +#define DEFUN_ARGS_MANY 712,26446 +#define DEFUN_ARGS_UNEVALLED 713,26498 +#define DEFUN_ARGS_0 714,26541 +#define DEFUN_ARGS_1 715,26569 +#define DEFUN_ARGS_2 716,26604 +#define DEFUN_ARGS_3 717,26652 +#define DEFUN_ARGS_4 718,26713 +#define DEFUN_ARGS_5 719,26787 +#define DEFUN_ARGS_6 721,26880 +#define DEFUN_ARGS_7 723,26986 +#define DEFUN_ARGS_8 725,27105 +#define TAG_PTR(729,27296 +#define TAG_SYMOFFSET(734,27543 +#define XLI_BUILTIN_LISPSYM(741,27842 +#define DEFINE_LISP_SYMBOL(746,28101 +# define DEFINE_NON_NIL_Q_SYMBOL_MACROS 755,28572 +LISP_MACRO_DEFUN 762,28777 +# define ARRAY_MARK_FLAG 768,29024 +# define PSEUDOVECTOR_FLAG 774,29267 +enum pvec_type780,29568 + PVEC_NORMAL_VECTOR,782,29585 + PVEC_FREE,783,29607 + PVEC_PROCESS,784,29620 + PVEC_FRAME,785,29636 + PVEC_WINDOW,786,29650 + PVEC_BOOL_VECTOR,787,29665 + PVEC_BUFFER,788,29685 + PVEC_HASH_TABLE,789,29700 + PVEC_TERMINAL,790,29719 + PVEC_WINDOW_CONFIGURATION,791,29736 + PVEC_SUBR,792,29765 + PVEC_OTHER,793,29778 + PVEC_COMPILED,795,29856 + PVEC_CHAR_TABLE,796,29873 + PVEC_SUB_CHAR_TABLE,797,29892 + PVEC_FONT 798,29915 +enum More_Lisp_Bits801,29991 + PSEUDOVECTOR_SIZE_BITS 808,30382 + PSEUDOVECTOR_SIZE_MASK 809,30415 + PSEUDOVECTOR_REST_BITS 813,30625 + PSEUDOVECTOR_REST_MASK 814,30658 + PSEUDOVECTOR_AREA_BITS 818,30823 + PVEC_TYPE_MASK 819,30901 +# define VALMASK 829,31302 +DEFINE_GDB_SYMBOL_BEGIN VALMASK828,31257 +#define MOST_POSITIVE_FIXNUM 834,31532 +#define MOST_NEGATIVE_FIXNUM 835,31592 +XINT 874,32684 +XFASTINT 889,33035 +XSYMBOL 899,33263 +XTYPE 910,33481 +XUNTAG 918,33661 +LISP_MACRO_DEFUN 927,33857 +LISP_MACRO_DEFUN 940,34242 +#define FIXNUM_OVERFLOW_P(958,34855 +LISP_MACRO_DEFUN FIXNUM_OVERFLOW_P952,34632 +LISP_MACRO_DEFUN 970,35171 +XSTRING 980,35391 +#define SYMBOL_INDEX(988,35575 +XFLOAT 991,35636 +XPROCESS 1000,35778 +XWINDOW 1007,35895 +XTERMINAL 1014,36012 +XSUBR 1021,36134 +XBUFFER 1028,36245 +XCHAR_TABLE 1035,36369 +XSUB_CHAR_TABLE 1042,36506 +XBOOL_VECTOR 1049,36648 +make_lisp_ptr 1058,36827 +make_lisp_symbol 1066,37013 +builtin_lisp_symbol 1074,37197 +#define XSETINT(1079,37279 +#define XSETFASTINT(1080,37325 +#define XSETCONS(1081,37375 +#define XSETVECTOR(1082,37435 +#define XSETSTRING(1083,37503 +#define XSETSYMBOL(1084,37567 +#define XSETFLOAT(1085,37621 +#define XSETMISC(1086,37683 +#define XSETPVECTYPE(1090,37772 +#define XSETPVECTYPESIZE(1092,37888 +#define XSETPSEUDOVECTOR(1099,38185 +#define XSETTYPED_PSEUDOVECTOR(1105,38369 +#define XSETWINDOW_CONFIGURATION(1110,38579 +#define XSETPROCESS(1112,38675 +#define XSETWINDOW(1113,38741 +#define XSETTERMINAL(1114,38805 +#define XSETSUBR(1115,38873 +#define XSETCOMPILED(1116,38933 +#define XSETBUFFER(1117,39001 +#define XSETCHAR_TABLE(1118,39065 +#define XSETBOOL_VECTOR(1119,39137 +#define XSETSUB_CHAR_TABLE(1120,39211 +XINTPTR 1128,39581 +make_pointer_integer 1134,39661 +LISP_MACRO_DEFUN_VOID 1143,39826 +typedef struct interval *INTERVAL;INTERVAL1149,39987 +xcar_addr 1174,40760 +xcdr_addr 1179,40837 +LISP_MACRO_DEFUN 1185,40931 +XSETCDR 1198,41307 +CAR 1205,41457 +CDR 1212,41591 +CAR_SAFE 1221,41791 +CDR_SAFE 1226,41877 +STRING_MULTIBYTE 1243,42250 +#define STRING_BYTES_BOUND 1261,43057 +#define STRING_SET_UNIBYTE(1265,43201 +#define STRING_SET_MULTIBYTE(1275,43516 +SDATA 1286,43830 +SSDATA 1291,43908 +SREF 1297,44037 +SSET 1302,44128 +SCHARS 1307,44242 +STRING_BYTES 1316,44415 +SBYTES 1326,44595 +STRING_SET_CHARS 1331,44681 +struct vectorlike_header1343,45232 +struct Lisp_Vector1369,46482 + ALIGNOF_STRUCT_LISP_VECTOR1378,46681 +struct Lisp_Bool_Vector1384,46864 +bool_vector_size 1399,47385 +bool_vector_data 1407,47523 +bool_vector_uchar_data 1413,47617 +bool_vector_words 1421,47803 +bool_vector_bytes 1428,47998 +bool_vector_bitref 1437,48238 +bool_vector_ref 1445,48478 +bool_vector_set 1453,48618 + header_size 1471,49047 + bool_header_size 1472,49106 + word_size 1473,49171 +AREF 1479,49284 +aref_addr 1485,49391 +ASIZE 1491,49501 +ASET 1497,49583 +gc_aset 1504,49742 +enum { NIL_IS_ZERO 1515,50269 +memclear 1520,50464 +#define VECSIZE(1531,50762 +#define PSEUDOVECSIZE(1538,51047 +#define UNSIGNED_CMP(1546,51480 +#define ASCII_CHAR_P(1552,51734 +enum CHARTAB_SIZE_BITS1565,52489 + CHARTAB_SIZE_BITS_0 1567,52516 + CHARTAB_SIZE_BITS_1 1568,52545 + CHARTAB_SIZE_BITS_2 1569,52574 + CHARTAB_SIZE_BITS_3 1570,52603 +struct Lisp_Char_Table1575,52672 +struct Lisp_Sub_Char_Table1606,53752 +CHAR_TABLE_REF_ASCII 1628,54566 +CHAR_TABLE_REF 1648,55113 +CHAR_TABLE_SET 1658,55402 +struct Lisp_Subr1670,55786 +enum char_table_specials1692,56798 + CHAR_TABLE_STANDARD_SLOTS 1697,56993 + SUB_CHAR_TABLE_OFFSET 1701,57214 +CHAR_TABLE_EXTRA_SLOTS 1707,57377 +LISP_MACRO_DEFUN 1723,57921 +SYMBOL_BLV 1732,58181 +SYMBOL_FWD 1738,58316 +LISP_MACRO_DEFUN_VOID 1744,58428 +SET_SYMBOL_BLV 1754,58691 +SET_SYMBOL_FWD 1760,58850 +SYMBOL_NAME 1767,59001 +SYMBOL_INTERNED_P 1775,59130 +SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P 1783,59299 +#define DEFSYM(1796,59809 +LISP_MACRO_DEFUN DEFSYM1792,59630 +struct hash_table_test1805,60062 +struct Lisp_Hash_Table1823,60555 +XHASH_TABLE 1880,62531 +#define XSET_HASH_TABLE(1885,62602 +HASH_TABLE_P 1889,62703 +HASH_KEY 1896,62860 +HASH_VALUE 1903,63040 +HASH_NEXT 1911,63254 +HASH_HASH 1918,63431 +HASH_INDEX 1926,63677 +HASH_TABLE_SIZE 1933,63826 +enum DEFAULT_HASH_SIZE 1940,63956 +enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE 1940,63956 +static double const DEFAULT_REHASH_THRESHOLD 1946,64176 +static double const DEFAULT_REHASH_SIZE 1950,64299 +sxhash_combine 1956,64465 +SXHASH_REDUCE 1964,64648 +struct Lisp_Misc_Any 1971,64806 + ENUM_BF 1973,64866 +struct Lisp_Marker1978,64980 + ENUM_BF 1980,65001 +struct Lisp_Overlay2021,66841 + ENUM_BF 2034,67349 + SAVE_UNUSED,2047,67644 + SAVE_INTEGER,2048,67661 + SAVE_FUNCPOINTER,2049,67679 + SAVE_POINTER,2050,67701 + SAVE_OBJECT2051,67719 +enum { SAVE_SLOT_BITS 2055,67804 +enum { SAVE_VALUE_SLOTS 2058,67901 +enum { SAVE_TYPE_BITS 2062,68009 +enum Lisp_Save_Type2064,68075 + SAVE_TYPE_INT_INT 2066,68099 + SAVE_TYPE_INT_INT_INT2067,68172 + SAVE_TYPE_OBJ_OBJ 2069,68262 + SAVE_TYPE_OBJ_OBJ_OBJ 2070,68333 + SAVE_TYPE_OBJ_OBJ_OBJ_OBJ2071,68414 + SAVE_TYPE_PTR_INT 2073,68509 + SAVE_TYPE_PTR_OBJ 2074,68582 + SAVE_TYPE_PTR_PTR 2075,68654 + SAVE_TYPE_FUNCPTR_PTR_OBJ2076,68727 + SAVE_TYPE_MEMORY 2080,68885 +typedef void (*voidfuncptr)voidfuncptr2108,69839 +struct Lisp_Save_Value2110,69876 + ENUM_BF 2112,69903 +save_type 2134,70755 +XSAVE_POINTER 2143,70985 +set_save_pointer 2149,71147 +XSAVE_FUNCPOINTER 2155,71329 +XSAVE_INTEGER 2164,71549 +set_save_integer 2170,71711 +XSAVE_OBJECT 2179,71932 +struct Lisp_Finalizer2186,72109 +struct Lisp_Free2201,72584 + ENUM_BF 2203,72605 +union Lisp_Misc2212,72885 +XMISC 2223,73184 +XMISCANY 2229,73273 +XMISCTYPE 2236,73382 +XMARKER 2242,73470 +XOVERLAY 2249,73585 +XSAVE_VALUE 2256,73706 +XFINALIZER 2263,73835 +struct Lisp_Intfwd2274,74120 +struct Lisp_Boolfwd2284,74414 +struct Lisp_Objfwd2294,74705 +struct Lisp_Buffer_Objfwd2302,74937 +struct Lisp_Buffer_Local_Value2334,76473 +struct Lisp_Kboard_Objfwd2362,77732 +union Lisp_Fwd2368,77841 +XFWDTYPE 2378,78087 +XBUFFER_OBJFWD 2384,78183 +struct Lisp_Float2391,78319 +XFLOAT_DATA 2401,78437 + IEEE_FLOATING_POINT2415,78946 +#define _UCHAR_T2423,79269 +typedef unsigned char UCHAR;2424,79286 +enum Lisp_Compiled2429,79369 + COMPILED_ARGLIST 2431,79392 + COMPILED_BYTECODE 2432,79418 + COMPILED_CONSTANTS 2433,79445 + COMPILED_STACK_DEPTH 2434,79473 + COMPILED_DOC_STRING 2435,79503 + COMPILED_INTERACTIVE 2436,79532 +enum char_bits2443,79834 + CHAR_ALT 2445,79853 + CHAR_SUPER 2446,79879 + CHAR_HYPER 2447,79907 + CHAR_SHIFT 2448,79935 + CHAR_CTL 2449,79963 + CHAR_META 2450,79989 + CHAR_MODIFIER_MASK 2452,80017 + CHARACTERBITS 2457,80212 +LISP_MACRO_DEFUN 2462,80270 +NATNUMP 2470,80412 +RANGED_INTEGERP 2476,80493 +#define TYPE_RANGED_INTEGERP(2481,80615 +LISP_MACRO_DEFUN 2486,80800 +VECTORP 2500,81273 +OVERLAYP 2505,81376 +SAVE_VALUEP 2510,81475 +FINALIZERP 2516,81581 +AUTOLOADP 2522,81685 +BUFFER_OBJFWDP 2528,81776 +PSEUDOVECTOR_TYPEP 2534,81874 +PSEUDOVECTORP 2542,82127 +WINDOW_CONFIGURATIONP 2558,82479 +PROCESSP 2564,82589 +WINDOWP 2570,82673 +TERMINALP 2576,82755 +SUBRP 2582,82841 +COMPILEDP 2588,82919 +BUFFERP 2594,83005 +CHAR_TABLE_P 2600,83087 +SUB_CHAR_TABLE_P 2606,83178 +BOOL_VECTOR_P 2612,83277 +FRAMEP 2618,83370 +IMAGEP 2625,83487 +ARRAYP 2632,83592 +CHECK_LIST 2638,83711 +LISP_MACRO_DEFUN_VOID 2643,83792 +CHECK_STRING_CAR 2653,84089 +CHECK_CONS 2658,84193 +CHECK_VECTOR 2663,84273 +CHECK_BOOL_VECTOR 2668,84359 +CHECK_VECTOR_OR_STRING 2674,84536 +CHECK_ARRAY 2683,84710 +CHECK_BUFFER 2688,84818 +CHECK_WINDOW 2693,84904 +CHECK_PROCESS 2699,85010 +CHECK_NATNUM 2705,85106 +#define CHECK_RANGED_INTEGER(2710,85183 +#define CHECK_TYPE_RANGED_INTEGER(2721,85566 +#define CHECK_NUMBER_COERCE_MARKER(2729,85836 +XFLOATINT 2738,86089 +CHECK_NUMBER_OR_FLOAT 2744,86160 +#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(2749,86259 +CHECK_NUMBER_CAR 2760,86669 +CHECK_NUMBER_CDR 2768,86791 +#define DEFUN(2803,88386 +#define DEFUN(2812,88854 +FUNCTIONP 2822,89209 +enum maxargs2831,89404 + MANY 2833,89421 + UNEVALLED 2834,89436 +#define CALLMANY(2838,89539 +#define CALLN(2844,89892 +#define DEFVAR_LISP(2869,91097 +#define DEFVAR_LISP_NOPRO(2874,91269 +#define DEFVAR_BOOL(2879,91451 +#define DEFVAR_INT(2884,91624 +#define DEFVAR_BUFFER_DEFAULTS(2890,91795 +#define DEFVAR_KBOARD(2896,91999 +typedef jmp_buf sys_jmp_buf;2906,92323 +# define sys_setjmp(2907,92352 +# define sys_longjmp(2908,92387 +typedef sigjmp_buf sys_jmp_buf;2910,92459 +# define sys_setjmp(2911,92491 +# define sys_longjmp(2912,92531 +typedef jmp_buf sys_jmp_buf;2916,92690 +# define sys_setjmp(2917,92719 +# define sys_longjmp(2918,92753 +enum specbind_tag 2943,93805 + SPECPDL_UNWIND,2944,93825 + SPECPDL_UNWIND_PTR,2945,93894 + SPECPDL_UNWIND_INT,2946,93945 + SPECPDL_UNWIND_VOID,2947,93993 + SPECPDL_BACKTRACE,2948,94047 + SPECPDL_LET,2949,94105 + SPECPDL_LET_LOCAL,2951,94235 + SPECPDL_LET_DEFAULT 2952,94292 +union specbinding2955,94364 + ENUM_BF 2957,94386 + ENUM_BF 2959,94443 + ENUM_BF 2964,94573 + ENUM_BF 2969,94696 + ENUM_BF 2974,94814 + ENUM_BF 2978,94919 + ENUM_BF 2983,95094 +enum handlertype 3021,96410 +enum handlertype { CATCHER,3021,96410 +enum handlertype { CATCHER, CONDITION_CASE 3021,96410 +struct handler3023,96457 +#define PUSH_HANDLER(3053,97446 +#define QUIT 3101,99223 +#define QUITP 3112,99473 +struct gcpro3132,100316 +#define GC_USE_GCPROS_AS_BEFORE 3171,101297 +#define GC_MAKE_GCPROS_NOOPS 3172,101332 +#define GC_MARK_STACK_CHECK_GCPROS 3173,101364 +#define GC_USE_GCPROS_CHECK_ZOMBIES 3174,101401 +#define GC_MARK_STACK 3177,101462 +#define BYTE_MARK_STACK 3181,101562 +#define GCPRO1(3190,101833 +#define GCPRO2(3191,101873 +#define GCPRO3(3192,101939 +#define GCPRO4(3194,102034 +#define GCPRO5(3196,102154 +#define GCPRO6(3198,102299 +#define GCPRO7(3201,102474 +#define UNGCPRO 3202,102553 +#define GCPRO1(3208,102653 +#define GCPRO2(3212,102775 +#define GCPRO3(3217,102967 +#define GCPRO4(3223,103229 +#define GCPRO5(3230,103560 +#define GCPRO6(3238,103961 +#define GCPRO7(3247,104431 +#define UNGCPRO 3257,104971 +#define GCPRO1(3263,105065 +#define GCPRO2(3269,105299 +#define GCPRO3(3278,105717 +#define GCPRO4(3289,106274 +#define GCPRO5(3302,106972 +#define GCPRO6(3317,107812 +#define GCPRO7(3334,108793 +#define UNGCPRO 3353,109916 +#define RETURN_UNGCPRO(3363,110183 +vcopy 3384,110657 +set_hash_key_slot 3393,110932 +set_hash_value_slot 3399,111071 +set_symbol_function 3408,111306 +set_symbol_plist 3414,111421 +set_symbol_next 3420,111524 +blv_found 3428,111697 +set_overlay_plist 3437,111880 +string_intervals 3445,112031 +set_string_intervals 3453,112153 +set_char_table_defalt 3462,112355 +set_char_table_purpose 3467,112467 +set_char_table_extras 3475,112636 +set_char_table_contents 3482,112845 +set_sub_char_table_contents 3489,113040 +enum Arith_Comparison 3497,113303 + ARITH_EQUAL,3498,113327 + ARITH_NOTEQUAL,3499,113342 + ARITH_LESS,3500,113360 + ARITH_GRTR,3501,113374 + ARITH_LESS_OR_EQUAL,3502,113388 + ARITH_GRTR_OR_EQUAL3503,113411 +#define INTEGER_TO_CONS(3511,113762 +#define CONS_TO_INTEGER(3529,114625 +enum { NEXT_ALMOST_PRIME_LIMIT 3573,116329 +extern EMACS_INT next_almost_prime 3574,116368 +enum constype 3739,123820 +enum constype {CONSTYPE_HEAP,CONSTYPE_HEAP3739,123820 +enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}CONSTYPE_PURE3739,123820 +list2i 3745,124010 +list3i 3751,124119 +list4i 3757,124258 +extern Lisp_Object make_formatted_string 3767,124634 +build_pure_c_string 3792,125662 +build_string 3801,125867 +make_uninit_vector 3820,126438 +make_uninit_sub_char_table 3833,126657 +#define ALLOCATE_PSEUDOVECTOR(3850,127201 +#define ALLOCATE_ZEROED_PSEUDOVECTOR(3858,127537 +INLINE void 3890,128943 +extern void *r_alloc r_alloc3895,129064 +#define FLOAT_TO_STRING_BUFSIZE 3927,130527 +intern 3968,132134 +intern_c_string 3974,132222 +extern _Noreturn void error 4034,135601 +fast_string_match_ignore_case 4136,140089 +INLINE void fixup_locale 4241,143854 +INLINE void synchronize_system_messages_locale 4242,143889 +INLINE void synchronize_system_time_locale 4243,143946 +#define IS_DAEMON 4257,144419 +#define DAEMON_RUNNING 4258,144459 +#define IS_DAEMON 4261,144558 +#define DAEMON_RUNNING 4262,144603 +# define WAIT_READING_MAX 4281,145422 +# define WAIT_READING_MAX 4283,145494 +extern _Noreturn void emacs_abort 4374,148386 +egetenv 4532,152809 +#define eabs(4545,153305 +#define make_fixnum_or_float(4550,153438 +enum MAX_ALLOCA 4556,153689 +enum MAX_ALLOCA { MAX_ALLOCA 4556,153689 +extern void *record_xmalloc record_xmalloc4558,153734 +#define USE_SAFE_ALLOCA 4560,153800 +#define AVAIL_ALLOCA(4564,153933 +#define SAFE_ALLOCA(4568,154044 +#define SAFE_NALLOCA(4576,154385 +#define SAFE_ALLOCA_STRING(4590,154861 +#define SAFE_FREE(4598,155113 +#define SAFE_ALLOCA_LISP(4625,155691 +# define USE_STACK_LISP_OBJECTS 4652,156813 +# undef USE_STACK_LISP_OBJECTS4658,156979 +# define USE_STACK_LISP_OBJECTS 4659,157010 +enum { defined_GC_CHECK_STRING_BYTES 4663,157085 +enum { defined_GC_CHECK_STRING_BYTES 4665,157138 +union Aligned_Cons4670,157272 +union Aligned_String4676,157352 + USE_STACK_CONS 4689,157707 + USE_STACK_STRING 4691,157813 +#define STACK_CONS(4699,158150 +#define AUTO_CONS_EXPR(4701,158247 +#define AUTO_CONS(4709,158610 +#define AUTO_LIST1(4710,158681 +#define AUTO_LIST2(4712,158789 +#define AUTO_LIST3(4716,158944 +#define AUTO_LIST4(4720,159119 +# define verify_ascii(4732,159510 +#define AUTO_STRING(4740,159818 +#define FOR_EACH_TAIL(4752,160282 +#define FOR_EACH_ALIST_VALUE(4766,160773 +maybe_gc 4774,161060 +functionp 4784,161299 + +c-src/machsyscalls.c,23 +#define SYSCALL(6,113 + +c-src/machsyscalls.h,159 +SYSCALL (mach_msg_trap,1,0 +SYSCALL (mach_reply_port,13,314 +SYSCALL (mach_thread_self,18,377 +SYSCALL (mach_task_self,23,441 +SYSCALL (mach_host_self,28,503 + +c-src/h.h,1850 + ELEM_I/ELEM_I3,15 +} Fails_t;5,85 +typedef void Lang_function 6,96 +typedef struct tpcmd8,147 +#define ggg 10,170 +tpcmd;15,209 +typedef struct foobar2_ 16,216 +} foobar2;20,307 + DEVICE_SWP,23,333 + DEVICE_LAST24,349 +} bsp_DevId;25,365 + struct constant_args 27,394 +} args;30,457 +typedef int *regset;regset31,465 +typedef int INT;32,486 +typedef union abc33,503 +} ghi1;36,534 +typedef union abc 37,542 +} ghi2;39,573 +typedef struct a 40,581 +} b;41,600 +#define c(42,605 +typedef struct an_extern_linkage *an_extern_linkage_ptr;an_extern_linkage_ptr43,619 +typedef struct an_extern_linkage 44,676 +} an_extern_linkage;56,1054 +typedef struct pollfd pfdset[pfdset57,1075 +typedef union rtunion_def58,1119 + } womboid 63,1206 +typedef union rtunion_def64,1220 +womboid75,1330 +enum {dog,dog81,1416 +enum {dog, cat}cat81,1416 +enum {dog, cat} animals;81,1416 +typedef void (_CALLBACK_ *signal_handler)signal_handler82,1441 +typedef void (_CALLBACK_ *signal_handler1)signal_handler183,1489 +/* comment */ #define ANSIC84,1538 + #define ANSIC85,1566 +typedef void (proc)87,1588 +typedef void OperatorFun(88,1612 +typedef int f(89,1648 +struct my_struct 91,1691 +typedef struct my_struct my_typedef;93,1713 +typedef RETSIGTYPE (*signal_handler_t)signal_handler_t94,1750 + Date 04 May 87 235311 PDT 96,1802 +typedef unsigned char unchar;99,1880 +typedef int X,100,1910 +typedef int X, Y,100,1910 +typedef int X, Y, Z;100,1910 +typedef mio mao;101,1931 +typedef struct a 103,1966 +typedef struct a { } b;103,1966 +typedef struct b104,1990 +} c;106,2009 +int extvar;109,2053 +#define tag1110,2065 +#define aaaaaa 111,2078 +#define bbbbbb\bbbbbb113,2102 +#define cccccccccc115,2125 +#define enter_critical_section 116,2144 +#define exit_critical_to_previous 117,2199 +#define UNDEFINED118,2259 +struct re_pattern_buffer 119,2277 + +cp-src/c.C,2094 +template * f(48,1556 +int f(49,1571 +int A::f(f50,1590 +A > A,int>::f(f51,1618 +template class AT 52,1668 +class AU 53,1716 +class B<B54,1735 +class B { void f(54,1735 +const A::B::T& abt 55,1766 +class A 56,1792 +class A { class B 56,1792 +class A 57,1827 + A operator+(59,1861 +is_muldiv_operation(61,1888 +domain foo 68,1956 + void f(69,1969 +void A::A(A72,1990 +struct A 73,2005 +struct B 74,2023 +void B::B(B75,2042 +void BE_Node::BE_Node(BE_Node76,2057 +class BE_Node 77,2084 +struct foo 79,2103 +class test 86,2157 + int f(87,2170 + int ff(89,2232 + int g(90,2255 +class AST_Root 92,2279 +AST_ConcreteType::AST_ConcreteType(99,2394 +AST_Array::AST_Array(107,2533 + void f(115,2734 +struct A 117,2754 +A::~A(~A120,2778 +struct B 122,2790 + ~B(123,2801 +enum {dog,dog126,2818 +enum {dog, cat}cat126,2818 +enum {dog, cat} animals;126,2818 +struct {int teats;} cow;127,2843 +class Boo 129,2869 + enum {dog,dog130,2881 + enum {dog, cat}cat130,2881 + foo(133,2955 + Boo(137,2996 +Boo::Boo(141,3071 +typedef int should_see_this_one_enclosed_in_extern_C;149,3156 +typedef int (*should_see_this_function_pointer)should_see_this_function_pointer153,3229 +typedef int should_see_this_array_type[should_see_this_array_type156,3311 + +cp-src/x.cc,63 +class XX1,0 +XX::foo(foo9,60 +XX::bar(bar15,95 +main(21,126 + +cp-src/burton.cpp,124 +::dummy::dummy test::dummy1(dummy11,0 +::dummy::dummy test::dummy2(dummy26,64 +::dummy::dummy test::dummy3(dummy311,143 + +cp-src/functions.cpp,778 +void Date::setDate setDate5,148 +void Date::plus plus32,939 +void Date::minus minus42,1229 +void Date::shift shift52,1407 +Date & Date::operator = operator =62,1628 +Date & Date::operator += operator +=69,1789 +Date & Date::operator -= operator -=78,1939 +Date & Date::operator ++ operator ++87,2080 +Date & Date::operator -- operator --96,2216 +int Date::operator - operator -104,2331 +int Date::operator < operator <112,2483 +int Date::operator > operator >116,2557 +int Date::operator == operator ==120,2631 +ostream& operator << operator <<124,2707 +istream& operator >> operator >>133,2943 +bool isLeap 159,3543 +bool isHoliday 163,3629 +void asort(173,3865 +void ReadVacation 186,4064 +void Debug 201,4523 +int WorkingDays(211,4867 +Date StartDay(226,5129 + +cp-src/MDiagArray2.h,482 +#define octave_MDiagArray2_h 29,870 +#undef LTGT35,967 +#define LTGT39,1031 +#define LTGT 42,1051 +class MDiagArray2 78,2022 + MDiagArray2 82,2077 + MDiagArray2 86,2154 + MDiagArray2 87,2198 + MDiagArray2 88,2254 + MDiagArray2 89,2329 + MDiagArray2 90,2387 + MDiagArray2 91,2450 + ~MDiagArray2 93,2515 + MDiagArray2& operator = operator =95,2542 + operator MArray2 operator MArray2101,2667 +#undef LTGT144,3874 +#define INSTANTIATE_MDIAGARRAY_FRIENDS(146,3887 + +cp-src/Range.h,275 +#define octave_Range_h 24,765 +Range35,891 + Range 39,909 + Range 42,995 + Range 46,1130 + Range 50,1248 + double base 54,1376 + double limit 55,1425 + double inc 56,1475 + int nelem 57,1523 + void set_base 68,1728 + void set_limit 69,1774 + void set_inc 70,1821 + +cp-src/screen.cpp,228 +unsigned char cursor_x,15,548 +unsigned char cursor_x, cursor_y;15,548 +static union REGS regs;16,582 +void goto_xy(18,607 +void hide_cursor(27,774 +void cursor_position(32,836 +void clear_screen(41,997 +void write_xyc(55,1247 + +cp-src/screen.hpp,414 +#define __COLORS9,401 +enum COLORS 11,419 + BLACK,12,433 + BLUE,13,471 + GREEN,14,481 + CYAN,15,492 + RED,16,502 + MAGENTA,17,511 + BROWN,18,524 + LIGHTGRAY,19,535 + DARKGRAY,20,550 + LIGHTBLUE,21,589 + LIGHTGREEN,22,604 + LIGHTCYAN,23,620 + LIGHTRED,24,635 + LIGHTMAGENTA,25,649 + YELLOW,26,667 + WHITE27,679 +#define SCREEN_FP(31,700 +#define SCREEN_START 33,795 + +cp-src/conway.cpp,288 +#define max(12,357 +#define min(13,393 +const int num_rows 15,430 +const int num_columns 16,470 +class site *field_of_play[field_of_play18,499 +int site::total_surrounding(total_surrounding20,550 +void display(37,958 +void glider(50,1239 +void traffic_light(59,1478 +void main(67,1633 + +cp-src/conway.hpp,164 +class site:site5,235 + site(10,344 + char read(12,410 + void set(13,444 + void clear(14,478 + void compute_next_state(15,514 + void step(22,717 + +cp-src/clheir.cpp,359 +const int max_num_generic_objects 9,298 +generic_object * object_registry[object_registry10,340 +void init_registry(12,400 +void step_everybody(19,527 +void discrete_location::clear_neighbors(clear_neighbors31,852 +generic_object::generic_object(generic_object36,981 +generic_object::~generic_object(~generic_object48,1255 +void agent::move(move53,1353 + +cp-src/clheir.hpp,423 +class generic_object13,520 + virtual void compute_next_state(21,843 + virtual void step(22,889 +const int max_num_directions 31,1220 +class location:location33,1290 + location(43,1643 +class irregular_location:irregular_location47,1687 + irregular_location(51,1763 +class discrete_location:discrete_location56,1890 + discrete_location(62,2045 + void assign_neighbor(66,2185 +class agent:agent75,2509 + +cp-src/fail.C,294 +struct A 7,263 + struct B 8,274 + struct C 9,289 + C(11,318 + operator int(operator int12,342 + typedef C T;14,389 + typedef B T2;16,414 +class A 23,453 + class B 24,463 + class C 25,474 + int f(26,488 +int A::B::f(f31,521 +main(37,571 + class D 41,622 + D(43,659 + +el-src/TAGTEST.EL,148 +(foo::defmumble bletch 1,0 +(defalias 'pending-delete-mode pending-delete-mode5,102 +(defalias (quote explicitly-quoted-pending-delete-mode)8,175 + +el-src/emacs/lisp/progmodes/etags.el,5069 +(defvar tags-file-name 34,1034 +(defgroup etags 43,1498 +(defcustom tags-case-fold-search 47,1566 +(defcustom tags-table-list 59,2051 +(defcustom tags-compression-info-list69,2449 +(defcustom tags-add-tables 88,3231 +(defcustom tags-revert-without-query 98,3627 +(defvar tags-table-computed-list 103,3778 +(defvar tags-table-computed-list-for 112,4262 +(defvar tags-table-list-pointer 117,4510 +(defvar tags-table-list-started-at 121,4701 +(defvar tags-table-set-list 124,4821 +(defcustom find-tag-hook 129,5000 +(defcustom find-tag-default-function 137,5263 +(define-obsolete-variable-alias 'find-tag-marker-ring-lengthfind-tag-marker-ring-length145,5602 +(defcustom tags-tag-face 148,5699 +(defcustom tags-apropos-verbose 154,5834 +(defcustom tags-apropos-additional-actions 160,5998 +(defvaralias 'find-tag-marker-ring find-tag-marker-ring183,6917 +(defvar default-tags-table-function 189,7097 +(defvar tags-location-ring 194,7323 +(defvar tags-table-files 201,7599 +(defvar tags-completion-table 206,7766 +(defvar tags-included-tables 209,7858 +(defvar next-file-list 212,7953 +(defvar tags-table-format-functions 217,8059 +(defvar file-of-tag-function 224,8440 +(defvar tags-table-files-function 228,8634 +(defvar tags-completion-table-function 230,8745 +(defvar snarf-tag-function 232,8840 +(defvar goto-tag-location-function 236,9049 +(defvar find-tag-regexp-search-function 239,9222 +(defvar find-tag-regexp-tag-order 241,9343 +(defvar find-tag-regexp-next-line-after-failure-p 243,9452 +(defvar find-tag-search-function 245,9572 +(defvar find-tag-tag-order 247,9679 +(defvar find-tag-next-line-after-failure-p 249,9774 +(defvar list-tags-function 251,9880 +(defvar tags-apropos-function 253,9968 +(defvar tags-included-tables-function 255,10062 +(defvar verify-tags-table-function 257,10181 +(defun initialize-new-tags-table 260,10292 +(defun tags-table-mode 276,10980 +(defun visit-tags-table 285,11245 +(defun tags-table-check-computed-list 321,12783 +(defun tags-table-extend-computed-list 360,14654 +(defun tags-expand-table-name 400,16367 +(defun tags-table-list-member 409,16710 +(defun tags-verify-table 421,17182 +(defun tags-table-including 470,19302 +(defun tags-next-table 522,21346 +(defun visit-tags-table-buffer 543,22203 +(defun tags-reset-tags-tables 712,28513 +(defun file-of-tag 731,29170 +(defun tags-table-files 740,29519 +(defun tags-included-tables 749,29869 +(defun tags-completion-table 755,30115 +(defun tags-lazy-completion-table 783,31309 +(defun tags-completion-at-point-function 799,31944 +(defun find-tag-tag 818,32694 +(defvar last-tag 837,33367 +(defun find-tag-interactive 840,33426 +(defvar find-tag-history 852,33841 +(defun find-tag-noselect 860,34011 +(defun find-tag 932,37125 +(defun find-tag-other-window 959,38341 +(defun find-tag-other-frame 1000,40269 +(defun find-tag-regexp 1025,41443 +(defalias 'pop-tag-mark pop-tag-mark1049,42605 +(defvar tag-lines-already-matched 1052,42656 +(defun find-tag-in-order 1055,42763 +(defun tag-find-file-of-tag-noselect 1167,47109 +(defun tag-find-file-of-tag 1200,48955 +(defun etags-recognize-tags-table 1208,49181 +(defun etags-verify-tags-table 1241,50812 +(defun etags-file-of-tag 1246,51010 +(defun etags-tags-completion-table 1256,51345 +(defun etags-snarf-tag 1286,52551 +(defun etags-goto-tag-location 1324,54120 +(defun etags-list-tags 1388,56563 +(defmacro tags-with-face 1423,57838 +(defun etags-tags-apropos-additional 1431,58171 +(defun etags-tags-apropos 1465,59408 +(defun etags-tags-table-files 1527,61617 +(defun etags-tags-included-tables 1542,62053 +(defun tags-recognize-empty-tags-table 1559,62593 +(defun tag-exact-file-name-match-p 1587,63739 +(defun tag-file-name-match-p 1596,64132 +(defun tag-exact-match-p 1609,64688 +(defun tag-implicit-name-match-p 1620,65256 +(defun tag-symbol-match-p 1633,65856 +(defun tag-word-match-p 1643,66292 +(defun tag-partial-file-name-match-p 1652,66690 +(defun tag-any-match-p 1662,67134 +(defun tag-re-match-p 1667,67318 +(defcustom tags-loop-revert-buffers 1675,67567 +(defun next-file 1685,67976 +(defvar tags-loop-operate 1760,70890 +(defvar tags-loop-scan1763,70984 +(defun tags-loop-eval 1771,71313 +(defun tags-loop-continue 1782,71642 +(defun tags-search 1850,73948 +(defun tags-query-replace 1871,74774 +(defun tags-complete-tags-table-file 1896,75998 +(defun list-tags 1906,76377 +(defun tags-apropos 1934,77330 +(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78156 +(defun select-tags-table 1964,78395 +(defvar select-tags-table-mode-map 2019,80522 +(define-derived-mode select-tags-table-mode 2030,80905 +(defun select-tags-table-select 2034,81089 +(defun select-tags-table-quit 2043,81455 +(defun complete-tag 2049,81610 +(defconst etags--xref-limit 2074,82551 +(defvar etags-xref-find-definitions-tag-order 2076,82586 +(defun etags-xref-find 2082,82876 +(defun etags--xref-find-definitions 2096,83405 +(defclass xref-etags-location 2129,85119 +(defun xref-make-etags-location 2135,85342 +(cl-defmethod xref-location-marker 2139,85497 +(cl-defmethod xref-location-line 2146,85741 + +erl-src/gs_dialog.erl,98 +-define(VERSION2,32 +behaviour_info(51,2177 +show(124,5458 +dialog_loop(219,9529 +test(252,10806 + +f-src/entry.for,172 + LOGICAL FUNCTION PRTPKG 3,75 + ENTRY SETPRT 194,3866 + ENTRY MSGSEL 395,8478 + & intensity1(577,12231 + character*(*) function foo(579,12307 + +f-src/entry.strange_suffix,172 + LOGICAL FUNCTION PRTPKG 3,75 + ENTRY SETPRT 194,3866 + ENTRY MSGSEL 395,8478 + & intensity1(577,12231 + character*(*) function foo(579,12307 + +f-src/entry.strange,172 + LOGICAL FUNCTION PRTPKG 3,75 + ENTRY SETPRT 194,3866 + ENTRY MSGSEL 395,8478 + & intensity1(577,12231 + character*(*) function foo(579,12307 + +forth-src/test-forth.fth,408 +: a-forth-word 20,301 +99 constant a-forth-constant!22,343 +55 value a-forth-value?23,373 +create :a-forth-dictionary-entry24,397 +defer #a-defer-word27,460 +: (another-forth-word)(another-forth-word29,481 + 9 field >field136,582 + 5 field >field237,605 +constant (a-forth-constant(a-forth-constant38,628 +2000 buffer: #some-storage41,657 +code assemby-code-word 43,685 +: a-forth-word 50,870 + +go-src/test.go,48 +package main1,0 +func say(5,28 +func main(9,72 + +go-src/test1.go,119 +package main1,0 +func (s str) PrintAdd(17,136 +func (n intNumber) PrintAdd(21,189 +func test(25,248 +func main(29,285 + +html-src/softwarelibero.html,200 +Cos'è il software libero?4,38 +Licenze d'uso di un programmalicenze65,2500 +Sfatiamo alcuni miti138,6118 +Il movimento open sourceoss191,8037 +Impatto pratico del software liberoimpatto231,10066 + +html-src/index.shtml,104 + 8,281 +In evidenza15,447 +Comunicati e iniziative32,976 +Ultime notizie dall'associazione63,2030 + +html-src/algrthms.html,467 +Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms7,277 +Descriptionalgorithms10,481 +Generating the Datagenalgorithm48,1995 +Convolutionallyconalgorithm55,2512 +Nextstatetable262,11587 +Outputoutputtable350,13915 +Mapping the Channel Symbolsmapping433,16213 +Adding Noise to theaddnoise439,16607 +Quantizing the Receivedquantizing469,19100 + +html-src/software.html,439 +Francesco Potortì Software Page9,280 +Software that I wrote for supporting my research activitysimulation36,1398 +MTGmtg41,1482 +Fracasfracas65,2624 +GaliLEOgalileo101,4232 +Leasqrleasqr114,4677 +Free software that I wrote for the GNU project or for my personal or workgnu142,6065 +Etagsetags148,6180 +checkiso161,6729 +cgrep178,7547 +debian-bug.eldebian-bug190,7979 +tcpdump205,8564 +Links to interesting softwarelinks216,8891 + +lua-src/allegro.lua,400 +local function get_layer_by_name 7,175 +local function count_layers 33,621 +function GetLayerByName 54,980 +function GetUniqueLayerName 65,1204 +function SelectLayer 76,1415 +function NewLayer 86,1773 +function NewLayerSet 144,3226 +function RemoveLayer 170,3750 +function MoveLayerTop 211,4767 +function MoveLayerBottom 223,5079 +function MoveLayerBefore 236,5457 +function MoveLayerAfter 258,6090 + +lua-src/test.lua,442 +function Rectangle.getPos 2,15 +function Rectangle.getPos getPos2,15 +function Circle.getPos 6,61 +function Circle.getPos getPos6,61 +function Cube.data.getFoo 10,102 +function Cube.data.getFoo getFoo10,102 +function Square.something:Bar 14,148 +function Square.something:Bar Bar14,148 + function test.me_22a(22,241 + function test.me_22a(me_22a22,241 + local function test.me22b 25,297 + local function test.me22b me22b25,297 + +make-src/Makefile,2175 +LATEST=1,0 +RELEASELIST=2,10 +ADASRC=4,104 +ASRC=5,171 +CSRC=6,197 +CPSRC=10,423 +ELSRC=13,614 +ERLSRC=14,661 +FORTHSRC=15,702 +FSRC=16,726 +HTMLSRC=17,776 +JAVASRC=18,844 +LUASRC=19,907 +MAKESRC=20,926 +OBJCSRC=21,943 +OBJCPPSRC=22,999 +PASSRC=23,1035 +PERLSRC=24,1053 +PHPSRC=25,1108 +PSSRC=26,1156 +PROLSRC=27,1173 +PYTSRC=28,1210 +TEXSRC=29,1227 +YSRC=30,1282 +SRCS=31,1325 +NONSRCS=35,1577 +VHDLFLAGS=37,1624 +COBOLFLAGS=38,1827 +POSTSCRIPTFLAGS=39,1889 +TCLFLAGS=40,1943 +GETOPTOBJS=42,2002 +RXINCLUDE=43,2034 +REGEXOBJS=44,2056 +CHECKOBJS=46,2075 +CHECKFLAGS=47,2105 +OBJS=48,2145 +CPPFLAGS=49,2190 +LDFLAGS=50,2259 +WARNINGS=51,2282 +CFLAGS=52,2466 +FASTCFLAGS=55,2530 +FASTCFLAGSWARN=56,2591 +FILTER=58,2641 +REGEX=59,2695 +xx=60,2741 +MAKE:MAKE62,2790 +RUN=63,2825 +RUN=64,2865 +OPTIONS=65,2870 +ARGS=66,2922 +infiles 68,2940 +quiettest:quiettest70,3002 +test:test79,3409 +${CHECKOBJS}:${CHECKOBJS}88,3805 +checker:checker90,3849 +standalone:standalone96,4062 +prof:prof101,4168 +fastetags:fastetags104,4198 +fastctags:fastctags108,4322 +staticetags:staticetags112,4446 +rsynctofly:rsynctofly116,4608 +rsyncfromfly:rsyncfromfly119,4698 +web ftp publish:web ftp publish122,4794 +release distrib:release distrib129,5115 +tags:tags134,5255 +clean:clean136,5267 +srclist:srclist139,5302 +regexfile:regexfile143,5391 +/home/www/pub/etags.c.gz:/home/www/pub/etags.c.gz149,5566 +/home/www/pub/software/unix/etags.tar.gz:/home/www/pub/software/unix/etags.tar.gz156,5825 +regex.o:regex.o159,6031 +getopt.o:getopt.o162,6086 +getopt1.o:getopt1.o165,6147 +etags:etags168,6210 +ctags:ctags171,6299 +man manpage:man manpage174,6396 +etags.1.man:etags.1.man176,6422 +maintaining.info:maintaining.info179,6475 +TAGS:TAGS182,6557 +%ediff:%ediff185,6587 +oediff:oediff188,6677 +%cdiff:%cdiff191,6764 +xdiff:xdiff194,6854 +ETAGS:ETAGS197,6942 +ETAGS%:ETAGS%200,7012 +ETAGS13 ETAGS14 ETAGS15:ETAGS13 ETAGS14 ETAGS15203,7084 +ETAGS12:ETAGS12206,7216 +OTAGS:OTAGS209,7304 +CTAGS:CTAGS212,7369 +CTAGS%:CTAGS%215,7443 +CTAGS13 CTAGS14 CTAGS15:CTAGS13 CTAGS14 CTAGS15218,7545 +EXTAGS:EXTAGS221,7680 +.PRECIOUS:.PRECIOUS224,7838 +FRC:FRC226,7894 + +objc-src/Subprocess.h,98 +#define Subprocess 41,1217 +#define BUFFERSIZE 43,1267 +@interface Subprocess:Subprocess45,1292 + +objc-src/Subprocess.m,446 +#define PTY_TEMPLATE 20,494 +#define PTY_LENGTH 21,528 +@interface Subprocess(Private)32,737 +- childDidExit39,851 +- fdHandler:fdHandler67,1589 +showError 98,2360 +fdHandler 112,2785 +getptys 119,2907 +- init:init183,4815 + andStdErr:init197,5147 +- send:(const char *)string withNewline:send300,7436 +- send:send308,7599 +- terminateInput314,7689 +- terminate:terminate321,7810 +- setDelegate:setDelegate332,7961 +- delegate338,8031 + +objc-src/PackInsp.h,109 +#define NUMSTATS 36,1101 +#define TYPESTOSTAT 37,1120 +@interface PackageInspector:PackageInspector39,1172 + +objc-src/PackInsp.m,1322 +static const char RCSid[RCSid30,1032 +#define VERSION 34,1116 +# define DEBUG 37,1155 +#define LISTCONTENTS 39,1181 +#define OPENBUTTON 47,1352 +#define LISTCONTENTSBUTTON 48,1449 +#define LISTDESCRIPTIONBUTTON 49,1562 +#define STATE_UNINSTALLED 52,1687 +#define STATE_INSTALLED 53,1807 +#define STATE_COMPRESSD 54,1948 +#define SIZEFORMAT 57,2152 +#define KBYTES 58,2362 +#define MBYTES 59,2473 +#define LOCALIZE(61,2585 +#define LOCALIZE_ARCH(62,2668 ++newnew67,2802 +-showInfo:showInfo93,3417 +-revert:revert107,3737 +-ok:ok136,4297 +-loadload143,4424 +#define LOOKUP(156,4826 +#undef LOOKUP176,5694 +-loadKeyValuesFrom:(const char *)type inTable:loadKeyValuesFrom186,5852 +-loadContentsOf:(const char *)type inTable:loadContentsOf238,7079 +-loadImageloadImage257,7552 +#define STAT_EQ(275,7940 +-(BOOL)shouldLoad280,8116 +-toggleDescriptiontoggleDescription301,8626 +-(const char *)getPath:(char *)buf forType:getPath317,8899 +-setRevertButtonTitlesetRevertButtonTitle333,9320 +-(const char *)formatSize:(const char *)size inBuf:formatSize344,9525 +#define WORKING 368,10045 +-(void)getArchs370,10100 +-(void)addArchs:addArchs385,10520 +-subprocess:(Subprocess *)sender output:subprocess428,11351 +-subprocessDone:subprocessDone436,11484 +static void openInWorkspace(446,11634 +-open:open464,12063 + +objcpp-src/SimpleCalc.H,41 +@interface SimpleCalc:SimpleCalc14,400 + +objcpp-src/SimpleCalc.M,445 +- init52,1747 +- appendToDisplay:appendToDisplay60,1933 +- registerAction:registerAction70,2210 +- decimalKey:decimalKey77,2348 +- numberKeys:numberKeys91,2661 +- equalsKey:equalsKey112,3192 +- operationKeys:operationKeys131,3680 +- clearKey:clearKey153,4301 +- clearAllKey:clearAllKey160,4410 +- appDidInit:appDidInit168,4591 +- windowWillClose:windowWillClose178,4882 +- infoPanel:infoPanel186,5132 +- helpPanel:helpPanel198,5482 + +pas-src/common.pas,1875 +procedure InitializeStringPackage;26,527 +function newtextstring;34,874 +procedure disposetextstring;52,1404 +function ConcatT;78,2066 +function AppendTextString;112,3238 +function CopyTextString;132,3947 +procedure CONVERT_CHARSTRING_TO_VALUE;151,4505 +procedure append_string;172,5166 +function To_Upper;186,5462 +function To_Lower;194,5617 +function EmptyNmStr(209,6213 +function chartonmstr;219,6436 +function LowerCaseNmStr;230,6682 +function concatenatenamestrings;242,7007 +procedure writenamestring;263,7517 +function IsControlChar;277,7928 +function namestringequal;283,8079 +function NameStringLess;302,8539 +function IsControlCharName(343,9710 +function SubString;358,10208 +function SkipChars;379,10791 +function RemoveUnderlineControl;397,11311 +procedure First100Chars;427,12162 +procedure SkipSpaces;462,13298 +function SkipBlanks;477,13782 +function stripname;505,14595 +function Locate;522,15039 +function NameHasChar;543,15581 +function integertonmstr;561,16134 +function NmStrToInteger;585,16901 +function AddNullToNmStr;600,17317 +function ValToNmStr;611,17585 +function ChangeFileType;625,18037 +function StripPath;647,18734 +function ReprOfChar;675,19343 +procedure ExtractCommentInfo;702,20749 +procedure INSERT_TREE_NODE;784,24053 +function GetNameList;920,27926 +procedure DisposeANameList(925,28010 +procedure DisposeNameList;938,28340 +function GetNewNameListNode;943,28409 +function insertname;972,29051 +procedure InitNameList;988,29471 +procedure InitNameStringPool;998,29767 +procedure NewNameString;1004,29867 +procedure ReleaseNameString;1022,30232 +procedure SDTrefStringToRec 1045,30741 +procedure SDTrefSkipSpaces;1059,31092 +function SDTrefIsEnd 1070,31323 +function SDTrefGetInteger 1082,31529 +procedure SDTrefRecToString 1303,37546 +function NmStrToErrStr;1497,42305 +function ErrStrToNmStr;1509,42557 +function GetTextRef;1529,43112 + +php-src/lce_functions.php,2152 + define("LCE_FUNCTIONS"LCE_FUNCTIONS4,38 + define("LCE_UNKNOWN"LCE_UNKNOWN9,145 + define("LCE_WS"LCE_WS11,194 + define("LCE_COMMENT"LCE_COMMENT13,244 + define("LCE_COMMENT_USER"LCE_COMMENT_USER15,303 + define("LCE_COMMENT_TOOL"LCE_COMMENT_TOOL17,366 + define("LCE_MSGID"LCE_MSGID19,430 + define("LCE_MSGSTR"LCE_MSGSTR21,488 + define("LCE_TEXT"LCE_TEXT23,541 + define("STATE_ABORT"STATE_ABORT25,567 + define("STATE_OK"STATE_OK26,595 + define("STATE_LOOP"STATE_LOOP27,620 + class POEntryAD 29,648 + function validate(31,683 + function checkQuotation(59,1384 + class CommentAD 70,1639 + function CommentAD(73,1693 + function validate(83,1944 + class POEntry 105,2410 + function POEntry(119,2711 + function lineCount(135,3255 + function serializeToVars(141,3365 + function write(151,3800 + class POReader 163,4178 + function gettext(177,4457 + function parseFromVars(189,4705 + function serializeToVars(215,5331 + function POReader(229,5613 + function read(243,5983 + function write(259,6307 + function isComment(277,6645 + function comment(284,6822 + function msgid(304,7247 + function msgstr(320,7574 + function start(340,8232 + function createPOEntries(360,8644 + function stripLine(394,9472 + function printClassification(421,10056 + function classifyLine(432,10301 + function getTextDomains(471,11094 + class PORManager 498,11756 + function PORManager(502,11822 + function addPOReader(507,11896 + function &getPOReader(getPOReader512,11992 + function getDomainNames(517,12081 + function &loadPORManager(loadPORManager523,12174 + function fileJoin(536,12436 + function lce_bindtextdomain(557,12839 + function lce_textdomain(614,14530 + function lce_gettext(620,14641 + function lce_dgettext(626,14767 + function lce(634,14966 + function lce_bindtextdomain(651,15488 + function lce_textdomain(656,15592 + function lce_gettext(661,15674 + function lce_dgettext(666,15755 + function lce(670,15855 + function lce_geteditcode(676,15898 + +php-src/ptest.php,46 +define("TEST"TEST1,0 +test 4,26 +foo(16,200 + - perl-src/htlmify-cystic,1443 ++perl-src/htlmify-cystic,1197 +my @section_name;section_name12,236 +my @appendix_name;appendix_name13,254 +my @section_toc;section_toc15,274 +my @appendix_toc;appendix_toc16,291 +my $new_tag new_tag18,310 +my $appendix;appendix24,409 +my $section;section25,423 +my $subsection;subsection26,436 +my $subsubsection;subsubsection27,452 +my $this_file_toc this_file_toc29,472 +my %file_tocs;file_tocs30,496 +my @output_files output_files32,512 +my $file_index file_index33,535 +my $output_file;output_file35,556 +my $line;line37,574 +my $subsection_marker;subsection_marker161,3883 +my $new;new163,3907 - sub read_toc main::read_toc165,3917 ++sub read_toc 165,3917 + my $entry entry218,5621 + my $entry entry234,6077 + my $entry entry245,6351 + my $entry entry252,6536 + my $entry entry268,7010 + my $entry entry276,7204 + my $entry entry281,7328 + my $entry entry296,7698 - sub finish_subsubsections main::finish_subsubsections302,7805 - sub finish_subsections main::finish_subsections309,7987 - sub finish_sections main::finish_sections320,8310 - sub finish_appendices main::finish_appendices331,8599 - sub section_url_base main::section_url_base337,8724 - sub section_url_name main::section_url_name342,8922 - sub section_url main::section_url355,9284 ++sub finish_subsubsections 302,7805 ++sub finish_subsections 309,7987 ++sub finish_sections 320,8310 ++sub finish_appendices 331,8599 ++sub section_url_base 337,8724 ++sub section_url_name 342,8922 ++sub section_url 355,9284 + my $name name357,9336 - sub section_href main::section_href364,9452 - sub section_name main::section_name368,9551 - sub toc_line main::toc_line372,9655 - sub file_end main::file_end375,9750 ++sub section_href 364,9452 ++sub section_name 368,9551 ++sub toc_line 372,9655 ++sub file_end 375,9750 + - perl-src/yagrip.pl,258 - sub getopt main::getopt7,156 ++perl-src/yagrip.pl,233 ++sub getopt 7,156 + local($_,$flag,$opt,$f,$r,@temp)($_,$flag,$opt,$f,$r,@temp8,169 - sub usage main::usage38,856 ++sub usage 38,856 + local($prog,$_,@list)($prog,$_,@list39,868 + local($string,$flag,@string,@temp,@last)($string,$flag,@string,@temp,@last40,897 + - perl-src/kai-test.pl,244 - sub f1 main::f12,16 - sub main::f2 6,50 ++perl-src/kai-test.pl,203 ++sub f1 2,16 ++sub main::f2 f26,50 +package Foo;10,90 - sub f3 Foo::f312,104 - sub Bar::f4 16,138 ++sub f3 12,104 ++sub Bar::f4 f416,138 +package Bar;20,177 - sub f5 Bar::f522,191 ++sub f5 22,191 +package Foo::Bar;26,225 - sub f6 Foo::Bar::f628,244 ++sub f6 28,244 +package main;32,278 - sub f7 main::f734,293 ++sub f7 34,293 + +ps-src/rfc1245.ps,2478 +/FMversion 12,311 +/FrameDict 17,500 +/FMVERSION 47,1307 +/FMLOCAL 56,1494 +/FMDOCUMENT 73,1766 +/FMBEGINPAGE 95,2279 +/FMENDPAGE 109,2516 +/FMDEFINEFONT 115,2582 +/FMNORMALIZEGRAPHICS 126,2725 +/FMBEGINEPSF 142,2955 +/FMENDEPSF 153,3207 +/setmanualfeed 158,3283 +/max 163,3386 +/min 164,3426 +/inch 165,3466 +/pagedimen 166,3485 +/setpapername 172,3629 +/papersize 190,4214 +/manualpapersize 211,4789 +/desperatepapersize 230,5211 +/savematrix 239,5370 +/restorematrix 242,5425 +/dmatrix 245,5475 +/dpi 246,5495 +/freq 248,5583 +/sangle 249,5658 +/DiacriticEncoding 250,5717 +/.notdef 251,5738 +/.notdef 252,5801 +/.notdef 253,5864 +/.notdef 254,5927 +/.notdef 255,5990 +/numbersign 256,6051 +/parenright 257,6115 +/two 258,6184 +/less 259,6251 +/L 260,6320 +/bracketright 261,6389 +/i 262,6459 +/braceright 263,6529 +/Ntilde 264,6598 +/atilde 265,6668 +/iacute 266,6733 +/ocircumflex 267,6797 +/udieresis 268,6858 +/paragraph 269,6919 +/dieresis 270,6983 +/yen 271,7050 +/ordfeminine 272,7109 +/exclamdown 273,7171 +/guillemotleft 274,7230 +/Otilde 275,7296 +/quoteleft 276,7357 +/fraction 277,7420 +/periodcentered 278,7490 +/Acircumflex 279,7549 +/Icircumflex 280,7610 +/Uacute 281,7680 +/breve 282,7746 +/ReEncode 284,7814 +/graymode 300,8020 +/setpattern 310,8184 +/grayness 331,8725 +/normalize 394,9873 +/dnormalize 397,9942 +/lnormalize 400,10014 +/H 403,10104 +/Z 406,10147 +/X 409,10176 +/V 412,10219 +/N 415,10260 +/M 418,10286 +/E 419,10315 +/D 420,10336 +/O 421,10358 +/L 423,10394 +/Y 430,10489 +/R 439,10588 +/RR 450,10696 +/C 467,10959 +/U 473,11004 +/F 477,11039 +/T 481,11084 +/RF 484,11115 +/TF 488,11164 +/P 495,11219 +/PF 499,11270 +/S 506,11344 +/SF 510,11384 +/B 517,11446 +/BF 521,11505 +/W 538,11714 +/G 573,12382 +/A 582,12525 +/BEGINPRINTCODE 606,12918 +/ENDPRINTCODE 615,13131 +/gn 620,13259 +/cfs 631,13384 +/ic 636,13473 +/ms 658,14285 +/ip 668,14395 +/wh 678,14492 +/bl 684,14607 +/s1 690,14722 +/fl 691,14739 +/hx 698,14887 +/wbytes 709,15055 +/BEGINBITMAPBWc 713,15147 +/BEGINBITMAPGRAYc 716,15198 +/BEGINBITMAP2BITc 719,15251 +/COMMONBITMAPc 722,15304 +/BEGINBITMAPBW 739,15660 +/BEGINBITMAPGRAY 742,15709 +/BEGINBITMAP2BIT 745,15760 +/COMMONBITMAP 748,15811 +/Fmcc 765,16156 +/ngrayt 773,16371 +/nredt 774,16393 +/nbluet 775,16414 +/ngreent 776,16436 +/colorsetup 787,16603 +/fakecolorsetup 814,17370 +/BITMAPCOLOR 826,17636 +/BITMAPCOLORc 839,17926 +/BITMAPGRAY 855,18275 +/BITMAPGRAYc 858,18335 +/ENDBITMAP 861,18397 +/fillprocs 868,18497 + +prol-src/ordsets.prolog,525 +is_ordset(47,1310 +list_to_ord_set(63,1688 +ord_add_element(71,1867 +ord_del_element(85,2344 +ord_disjoint(100,2783 +ord_intersect(108,2953 +ord_intersection(126,3552 +ord_intersection3(130,3691 +ord_intersection(150,4531 +ord_intersection4(154,4703 +ord_intersection(176,5664 +ord_intersection2(181,5812 +ord_member(200,6318 +ord_seteq(216,6683 +ord_setproduct(225,6971 +ord_subset(240,7377 +ord_subtract(257,7861 +ord_symdiff(265,8054 +ord_union(288,8887 +ord_union4(303,9352 +ord_union(324,10171 +ord_union_all(329,10313 + +prol-src/natded.prolog,2319 +expandmng(100,2879 +normalize(116,3359 +fresh_vars(125,3716 +subst(138,4134 +normalize_fresh(159,4660 +reduce_subterm(171,5112 +reduce(185,5559 +free_var(196,5903 +free_for(209,6246 +compile_lex(231,6875 +consult_lex:-consult_lex248,7384 +lex(259,7754 +expandsyn(267,8068 +bas_syn(292,8897 +compile_empty:-compile_empty310,9376 +complete(328,10055 +add_active(340,10527 +parse(353,10949 +derived_analyses(364,11341 +build(378,11965 +buildact(392,12521 +mapsyn(412,13542 +add_edge(434,14278 +findcats(447,14758 +normalize_tree(465,15478 +normalize_trees(475,15856 +expandmng_tree(486,16248 +expandmng_trees(496,16614 +cat(511,17013 +subtree(644,21266 +hypothetical_mem(653,21565 +make_coor(667,22130 +start_up:-start_up688,23013 +tokenizeatom(710,23921 +tokenize(720,24348 +isoperator(752,25377 +isoptab(756,25431 +specialsymbol(765,25756 +sstab(771,25861 +parse_cgi(787,26347 +keyvalseq(792,26510 +andkeyvalseq(796,26609 +keyval(799,26688 +valseq(807,26920 +plusvalseq(810,27007 +val(816,27109 +argvals(824,27426 +commaargvals(828,27503 +atomval(833,27578 +atom(836,27640 +action(846,28004 +keyvalcgi(864,28649 +keyvalscgi(865,28670 +outsyn(868,28726 +act(876,29060 +actout(901,29906 +texttreelist(912,30089 +htmltreelist(918,30190 +fitchtreelist(924,30304 +pp_html_table_tree(938,30759 +pp_html_tree(949,31113 +pp_html_trees(988,32381 +pp_html_table_fitch_tree(999,32769 +pp_html_fitch_tree(1017,33672 +removeexp(1129,39002 +splitexp(1142,39490 +pp_exp(1155,39990 +map_word(1168,40249 +pp_exps(1180,40474 +pp_tree(1188,40777 +pp_trees(1216,41807 +pp_word_list(1225,42128 +pp_word(1231,42262 +pp_word_list_rest(1238,42569 +pp_cat(1248,42929 +pp_syn(1255,43196 +pp_syn_paren(1276,43899 +pp_paren(1293,44377 +pp_syn_back(1300,44661 +pp_bas_cat(1311,45001 +writecat(1322,45409 +writesubs(1351,46455 +writesups(1361,46757 +writelistsubs(1371,47090 +pp_lam(1380,47408 +pp_lam_bracket(1398,48022 +pp_lam_paren(1407,48338 +pp_rule(1429,49238 +member(1447,49866 +append_list(1451,49919 +append(1456,50010 +at_least_one_member(1460,50076 +numbervars(1464,50171 +reverse(1467,50209 +select(1471,50290 +select_last(1475,50357 +cat_atoms(1479,50436 +writelist(1485,50524 +write_lex_cat(1492,50676 +writebreaklex(1500,50988 +write_lex(1513,51265 +writebreak(1521,51541 +tt:-tt1531,51713 +mt:-mt1534,51784 +cmt:-cmt1537,51878 + +pyt-src/server.py,1438 +class Controls:Controls17,358 + def __init__(18,374 + def __repr__(24,590 + def __str__(34,871 +class Server:Server37,934 + def __init__(38,948 + def dump(73,2198 + def __repr__(125,3896 + def __str__(128,3945 +class User:User131,4014 + def __init__(132,4026 + def __repr__(172,5445 + def __str__(206,6883 +def flag2str(223,7212 +class LabeledEntry(232,7442 + def bind(234,7525 + def focus_set(236,7584 + def __init__(238,7629 +def ButtonBar(245,7909 +def helpwin(255,8280 +class ListEdit(267,8707 + def __init__(269,8808 + def handleList(303,10042 + def handleNew(306,10094 + def editItem(314,10426 + def deleteItem(320,10596 +def ConfirmQuit(326,10760 +class ControlEdit(375,12377 + def PostControls(376,12403 + def GatherControls(421,13530 +class ServerEdit(512,16264 + def __init__(513,16289 + def post(525,16629 + def gather(543,17191 + def nosave(547,17304 + def save(551,17408 + def refreshPort(556,17509 + def createWidgets(561,17663 + def edituser(631,20708 +class UserEdit(645,20921 + def __init__(646,20944 + def post(658,21283 + def gather(676,21841 + def nosave(680,21950 + def save(684,22052 + def createWidgets(689,22151 +class Configure(760,24879 + def __init__(761,24916 + def MakeDispose(772,25211 + def MakeSitelist(786,25706 + def editsite(794,25949 + def save(797,26022 + def nosave(807,26310 + +ruby-src/test.rb,637 +module ModuleExample1,0 + class ClassExample2,21 + def instance_method3,44 + def ClassExample.class_methodclass_method6,121 + def instance_method_exclamation!9,206 + def instance_method_question?12,310 + def instance_method_equals=instance_method_equals=15,408 + def `(18,502 + def +(21,592 + def [](24,640 + def []=([]=27,690 + def <<(30,752 + def ==(==33,802 + def <=(<=36,872 + def <=>(<=>39,943 + def ===(===42,990 + def module_instance_method46,1051 + def ModuleExample.module_class_methodmodule_class_method49,1131 + +ruby-src/test1.ru,935 +class A1,0 + def a(2,8 + def b(5,38 +module A9,57 + class B10,66 + ABC 11,76 + Def_ 12,88 + Xyzzy 13,106 + def foo!15,121 + def self._bar?(_bar?18,143 + def qux=(qux=22,194 + attr_reader :foofoo26,233 + attr_reader :read1 read127,254 + attr_reader :read1 , :read2;read227,254 + attr_reader :read1 , :read2; attr_writer :write1,write1=27,254 + attr_reader :read1 , :read2; attr_writer :write1, :write2write2=27,254 + attr_writer :bar,bar=28,316 + :baz,baz=29,338 + :moremore=30,360 + attr_accessor :teetee31,382 + attr_accessor :teetee=31,382 + alias_method :qux,qux32,405 + alias_method :xyz,xyz33,456 + :tee ; attr_reader :subtlesubtle34,479 + attr_reader(:foo1,foo135,523 + attr_reader(:foo1, :bar1,bar135,523 + :qux1)qux136,563 + alias_method ( :foo2,foo237,586 +A::Constant Constant42,655 + +tex-src/testenv.tex,52 +\newcommand{\nm}\nm4,77 +\section{blah}blah8,139 + +tex-src/gzip.texi,303 +@node Top,62,2139 +@node Copying,80,2652 +@node Overview,83,2705 +@node Sample,166,7272 +@node Invoking gzip,Invoking gzip210,8828 +@node Advanced usage,Advanced usage357,13495 +@node Environment,420,15207 +@node Tapes,437,15768 +@node Problems,460,16767 +@node Concept Index,Concept Index473,17287 + +tex-src/texinfo.tex,30627 +\def\texinfoversion{\texinfoversion26,1027 +\def\tie{\tie49,1518 +\def\gloggingall{\gloggingall72,2268 +\def\loggingall{\loggingall73,2337 +\def\onepageout#1{\onepageout99,3274 +\def\croppageout#1{\croppageout115,4024 +\def\cropmarks{\cropmarks142,5084 +\def\pagebody#1{\pagebody144,5131 +\def\ewtop{\ewtop157,5586 +\def\nstop{\nstop158,5650 +\def\ewbot{\ewbot160,5733 +\def\nsbot{\nsbot161,5797 +\def\parsearg #1{\parsearg170,6096 +\def\parseargx{\parseargx172,6174 +\def\parseargline{\parseargline182,6414 +\def\flushcr{\flushcr186,6535 +\newif\ifENV \ENVfalse \def\inENV{\inENV190,6734 +\def\ENVcheck{\ENVcheck191,6798 +\outer\def\begin{\begin198,7045 +\def\beginxxx #1{\beginxxx200,7083 +\def\end{\end208,7338 +\def\endxxx #1{\endxxx210,7366 +\def\errorE#1{\errorE216,7555 +\def\singlespace{\singlespace222,7749 +\def\@{\@232,7972 +\def\`{\`236,8072 +\def\'{\'237,8084 +\def\mylbrace {\mylbrace241,8132 +\def\myrbrace {\myrbrace242,8165 +\def\:{\:247,8279 +\def\*{\*250,8333 +\def\.{\.253,8409 +\def\w#1{\w258,8640 +\def\group{\group268,9123 + \def\Egroup{\Egroup273,9287 +\def\need{\need289,9729 +\def\needx#1{\needx300,10006 +\def\dots{\dots339,11392 +\def\page{\page343,11456 +\def\exdent{\exdent353,11783 +\def\exdentyyy #1{\exdentyyy354,11816 +\def\nofillexdent{\nofillexdent357,11960 +\def\nofillexdentyyy #1{\nofillexdentyyy358,12005 +\def\include{\include365,12189 +\def\includezzz #1{\includezzz366,12224 +\def\thisfile{\thisfile369,12275 +\def\center{\center373,12338 +\def\centerzzz #1{\centerzzz374,12371 +\def\sp{\sp380,12513 +\def\spxxx #1{\spxxx381,12538 +\def\comment{\comment387,12712 +\def\commentxxx #1{\commentxxx390,12809 +\def\ignoresections{\ignoresections396,12978 +\let\chapter=\relax=\relax397,13000 +\let\section=\relax=\relax406,13245 +\let\subsection=\relax=\relax409,13306 +\let\subsubsection=\relax=\relax410,13329 +\let\appendix=\relax=\relax411,13355 +\let\appendixsec=\relaxsec=\relax412,13376 +\let\appendixsection=\relaxsection=\relax413,13400 +\let\appendixsubsec=\relaxsubsec=\relax414,13428 +\let\appendixsubsection=\relaxsubsection=\relax415,13455 +\let\appendixsubsubsec=\relaxsubsubsec=\relax416,13486 +\let\appendixsubsubsection=\relaxsubsubsection=\relax417,13516 +\def\ignore{\ignore423,13618 +\long\def\ignorexxx #1\end ignore{\ignorexxx427,13758 +\def\direntry{\direntry429,13817 +\long\def\direntryxxx #1\end direntry{\direntryxxx430,13856 +\def\ifset{\ifset434,13966 +\def\ifsetxxx #1{\ifsetxxx436,14024 +\def\Eifset{\Eifset440,14151 +\def\ifsetfail{\ifsetfail441,14165 +\long\def\ifsetfailxxx #1\end ifset{\ifsetfailxxx442,14221 +\def\ifclear{\ifclear444,14282 +\def\ifclearxxx #1{\ifclearxxx446,14344 +\def\Eifclear{\Eifclear450,14475 +\def\ifclearfail{\ifclearfail451,14491 +\long\def\ifclearfailxxx #1\end ifclear{\ifclearfailxxx452,14551 +\def\set{\set456,14702 +\def\setxxx #1{\setxxx457,14729 +\def\clear{\clear460,14791 +\def\clearxxx #1{\clearxxx461,14822 +\def\iftex{\iftex466,14939 +\def\Eiftex{\Eiftex467,14952 +\def\ifinfo{\ifinfo468,14966 +\long\def\ifinfoxxx #1\end ifinfo{\ifinfoxxx469,15016 +\long\def\menu #1\end menu{\menu471,15075 +\def\asis#1{\asis472,15104 +\def\math#1{\math485,15647 +\def\node{\node487,15691 +\def\nodezzz#1{\nodezzz488,15729 +\def\nodexxx[#1,#2]{\nodexxx[489,15760 +\def\donoderef{\donoderef492,15822 +\def\unnumbnoderef{\unnumbnoderef496,15943 +\def\appendixnoderef{\appendixnoderef500,16074 +\expandafter\expandafter\expandafter\appendixsetref{setref501,16120 +\let\refill=\relaxill=\relax504,16209 +\def\setfilename{\setfilename509,16423 +\outer\def\bye{\bye518,16669 +\def\inforef #1{\inforef520,16725 +\def\inforefzzz #1,#2,#3,#4**{\inforefzzz521,16763 +\def\losespace #1{\losespace523,16860 +\def\sf{\sf532,17064 +\font\defbf=cmbx10 scaled \magstep1 %was 1314bf=cmbx10558,17859 +\font\deftt=cmtt10 scaled \magstep1tt=cmtt10559,17905 +\def\df{\df560,17941 +\def\resetmathfonts{\resetmathfonts635,20535 +\def\textfonts{\textfonts648,21124 +\def\chapfonts{\chapfonts653,21339 +\def\secfonts{\secfonts658,21555 +\def\subsecfonts{\subsecfonts663,21760 +\def\indexfonts{\indexfonts668,21977 +\def\smartitalicx{\smartitalicx691,22709 +\def\smartitalic#1{\smartitalic692,22785 +\let\cite=\smartitalic=\smartitalic698,22930 +\def\b#1{\b700,22954 +\def\t#1{\t703,22989 +\def\samp #1{\samp706,23141 +\def\key #1{\key707,23174 +\def\ctrl #1{\ctrl708,23235 +\def\tclose#1{\tclose716,23437 +\def\ {\720,23603 +\def\xkey{\xkey728,23872 +\def\kbdfoo#1#2#3\par{\kbdfoo729,23888 +\def\dmn#1{\dmn738,24189 +\def\kbd#1{\kbd740,24216 +\def\l#1{\l742,24273 +\def\r#1{\r744,24302 +\def\sc#1{\sc746,24370 +\def\ii#1{\ii747,24413 +\def\titlefont#1{\titlefont755,24646 +\def\titlepage{\titlepage761,24749 + \def\subtitlefont{\subtitlefont766,24976 + \def\authorfont{\authorfont768,25060 + \def\title{\title774,25270 + \def\titlezzz##1{\titlezzz775,25305 + \def\subtitle{\subtitle783,25620 + \def\subtitlezzz##1{\subtitlezzz784,25661 + \def\author{\author787,25779 + \def\authorzzz##1{\authorzzz788,25816 + \def\page{\page794,26107 +\def\Etitlepage{\Etitlepage804,26276 +\def\finishtitlepage{\finishtitlepage817,26664 +\def\evenheading{\evenheading846,27672 +\def\oddheading{\oddheading847,27715 +\def\everyheading{\everyheading848,27756 +\def\evenfooting{\evenfooting850,27802 +\def\oddfooting{\oddfooting851,27845 +\def\everyfooting{\everyfooting852,27886 +\def\headings #1 {\headings893,29578 +\def\HEADINGSoff{\HEADINGSoff895,29627 +\def\HEADINGSdouble{\HEADINGSdouble904,30054 +\def\HEADINGSsingle{\HEADINGSsingle914,30374 +\def\HEADINGSon{\HEADINGSon922,30595 +\def\HEADINGSafter{\HEADINGSafter924,30629 +\def\HEADINGSdoublex{\HEADINGSdoublex926,30724 +\def\HEADINGSsingleafter{\HEADINGSsingleafter933,30912 +\def\HEADINGSsinglex{\HEADINGSsinglex934,30973 +\def\today{\today943,31248 +\def\thistitle{\thistitle958,31793 +\def\settitle{\settitle959,31818 +\def\settitlezzz #1{\settitlezzz960,31855 +\def\internalBitem{\internalBitem992,32785 +\def\internalBitemx{\internalBitemx993,32835 +\def\internalBxitem "#1"{\internalBxitem995,32880 +\def\internalBxitemx "#1"{\internalBxitemx996,32960 +\def\internalBkitem{\internalBkitem998,33035 +\def\internalBkitemx{\internalBkitemx999,33087 +\def\kitemzzz #1{\kitemzzz1001,33134 +\def\xitemzzz #1{\xitemzzz1004,33236 +\def\itemzzz #1{\itemzzz1007,33339 +\def\item{\item1037,34410 +\def\itemx{\itemx1038,34461 +\def\kitem{\kitem1039,34514 +\def\kitemx{\kitemx1040,34567 +\def\xitem{\xitem1041,34622 +\def\xitemx{\xitemx1042,34675 +\def\description{\description1045,34785 +\def\table{\table1047,34835 +\def\ftable{\ftable1052,34979 +\def\Eftable{\Eftable1056,35125 +\def\vtable{\vtable1059,35194 +\def\Evtable{\Evtable1063,35340 +\def\dontindex #1{\dontindex1066,35409 +\def\fnitemindex #1{\fnitemindex1067,35429 +\def\vritemindex #1{\vritemindex1068,35474 +\def\tablez #1#2#3#4#5#6{\tablez1074,35623 +\def\Edescription{\Edescription1077,35681 +\def\itemfont{\itemfont1082,35883 +\def\Etable{\Etable1090,36109 +\def\itemize{\itemize1103,36433 +\def\itemizezzz #1{\itemizezzz1105,36469 +\def\itemizey #1#2{\itemizey1110,36564 +\def#2{1119,36810 +\def\itemcontents{\itemcontents1120,36851 +\def\bullet{\bullet1123,36899 +\def\minus{\minus1124,36926 +\def\frenchspacing{\frenchspacing1128,37034 +\def\splitoff#1#2\endmark{\splitoff1134,37259 +\def\enumerate{\enumerate1140,37489 +\def\enumeratezzz #1{\enumeratezzz1141,37528 +\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37581 + \def\thearg{\thearg1146,37728 + \ifx\thearg\empty \def\thearg{\thearg1147,37747 +\def\numericenumerate{\numericenumerate1184,39081 +\def\lowercaseenumerate{\lowercaseenumerate1190,39211 +\def\uppercaseenumerate{\uppercaseenumerate1203,39558 +\def\startenumeration#1{\startenumeration1219,40048 +\def\alphaenumerate{\alphaenumerate1227,40230 +\def\capsenumerate{\capsenumerate1228,40265 +\def\Ealphaenumerate{\Ealphaenumerate1229,40299 +\def\Ecapsenumerate{\Ecapsenumerate1230,40333 +\def\itemizeitem{\itemizeitem1234,40413 +\def\newindex #1{\newindex1259,41270 +\def\defindex{\defindex1268,41559 +\def\newcodeindex #1{\newcodeindex1272,41667 +\def\defcodeindex{\defcodeindex1279,41927 +\def\synindex #1 #2 {\synindex1283,42107 +\def\syncodeindex #1 #2 {\syncodeindex1292,42447 +\def\doindex#1{\doindex1309,43126 +\def\singleindexer #1{\singleindexer1310,43185 +\def\docodeindex#1{\docodeindex1313,43297 +\def\singlecodeindexer #1{\singlecodeindexer1314,43364 +\def\indexdummies{\indexdummies1316,43422 +\def\_{\_1317,43442 +\def\w{\w1318,43470 +\def\bf{\bf1319,43497 +\def\rm{\rm1320,43526 +\def\sl{\sl1321,43555 +\def\sf{\sf1322,43584 +\def\tt{\tt1323,43612 +\def\gtr{\gtr1324,43640 +\def\less{\less1325,43670 +\def\hat{\hat1326,43702 +\def\char{\char1327,43732 +\def\TeX{\TeX1328,43764 +\def\dots{\dots1329,43794 +\def\copyright{\copyright1330,43827 +\def\tclose##1{\tclose1331,43870 +\def\code##1{\code1332,43915 +\def\samp##1{\samp1333,43956 +\def\t##1{\t1334,43997 +\def\r##1{\r1335,44032 +\def\i##1{\i1336,44067 +\def\b##1{\b1337,44102 +\def\cite##1{\cite1338,44137 +\def\key##1{\key1339,44178 +\def\file##1{\file1340,44217 +\def\var##1{\var1341,44258 +\def\kbd##1{\kbd1342,44297 +\def\indexdummyfont#1{\indexdummyfont1347,44453 +\def\indexdummytex{\indexdummytex1348,44479 +\def\indexdummydots{\indexdummydots1349,44503 +\def\indexnofonts{\indexnofonts1351,44529 +\let\w=\indexdummyfontdummyfont1352,44549 +\let\t=\indexdummyfontdummyfont1353,44572 +\let\r=\indexdummyfontdummyfont1354,44595 +\let\i=\indexdummyfontdummyfont1355,44618 +\let\b=\indexdummyfontdummyfont1356,44641 +\let\emph=\indexdummyfontdummyfont1357,44664 +\let\strong=\indexdummyfontdummyfont1358,44690 +\let\cite=\indexdummyfont=\indexdummyfont1359,44718 +\let\sc=\indexdummyfontdummyfont1360,44744 +\let\tclose=\indexdummyfontdummyfont1364,44916 +\let\code=\indexdummyfontdummyfont1365,44944 +\let\file=\indexdummyfontdummyfont1366,44970 +\let\samp=\indexdummyfontdummyfont1367,44996 +\let\kbd=\indexdummyfontdummyfont1368,45022 +\let\key=\indexdummyfontdummyfont1369,45047 +\let\var=\indexdummyfontdummyfont1370,45072 +\let\TeX=\indexdummytexdummytex1371,45097 +\let\dots=\indexdummydotsdummydots1372,45121 +\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45373 +\def\doind #1#2{\doind1384,45429 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45472 +\def\rawbackslashxx{\rawbackslashxx1389,45612 +{\indexnofontsnofonts1394,45874 +\def\dosubind #1#2#3{\dosubind1405,46185 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46233 +\def\rawbackslashxx{\rawbackslashxx1410,46337 +{\indexnofontsnofonts1414,46491 +\def\findex {\findex1443,47422 +\def\kindex {\kindex1444,47445 +\def\cindex {\cindex1445,47468 +\def\vindex {\vindex1446,47491 +\def\tindex {\tindex1447,47514 +\def\pindex {\pindex1448,47537 +\def\cindexsub {\cindexsub1450,47561 +\def\printindex{\printindex1462,47888 +\def\doprintindex#1{\doprintindex1464,47929 + \def\indexbackslash{\indexbackslash1481,48414 + \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48453 +\def\initial #1{\initial1517,49525 +\def\entry #1#2{\entry1523,49732 + \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50379 +\def\indexdotfill{\indexdotfill1549,50707 +\def\primary #1{\primary1552,50813 +\def\secondary #1#2{\secondary1556,50895 +\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50977 +\newbox\partialpageialpage1566,51150 +\def\begindoublecolumns{\begindoublecolumns1572,51308 + \output={\global\setbox\partialpage=ialpage=1573,51344 +\def\enddoublecolumns{\enddoublecolumns1577,51532 +\def\doublecolumnout{\doublecolumnout1580,51617 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51686 +\def\pagesofar{\pagesofar1584,51864 +\def\balancecolumns{\balancecolumns1588,52101 + \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52272 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52533 +\newcount \appendixno \appendixno = `\@no1627,53438 +\def\appendixletter{\appendixletter1628,53479 +\def\opencontents{\opencontents1632,53582 +\def\thischapter{\thischapter1637,53763 +\def\seccheck#1{\seccheck1638,53801 +\def\chapternofonts{\chapternofonts1643,53905 +\def\result{\result1646,53980 +\def\equiv{\equiv1647,54015 +\def\expansion{\expansion1648,54048 +\def\print{\print1649,54089 +\def\TeX{\TeX1650,54122 +\def\dots{\dots1651,54151 +\def\copyright{\copyright1652,54182 +\def\tt{\tt1653,54223 +\def\bf{\bf1654,54250 +\def\w{\w1655,54278 +\def\less{\less1656,54303 +\def\gtr{\gtr1657,54334 +\def\hat{\hat1658,54363 +\def\char{\char1659,54392 +\def\tclose##1{\tclose1660,54423 +\def\code##1{\code1661,54467 +\def\samp##1{\samp1662,54507 +\def\r##1{\r1663,54547 +\def\b##1{\b1664,54581 +\def\key##1{\key1665,54615 +\def\file##1{\file1666,54653 +\def\kbd##1{\kbd1667,54693 +\def\i##1{\i1669,54801 +\def\cite##1{\cite1670,54835 +\def\var##1{\var1671,54875 +\def\emph##1{\emph1672,54913 +\def\dfn##1{\dfn1673,54953 +\def\thischaptername{\thischaptername1676,54994 +\outer\def\chapter{\chapter1677,55033 +\def\chapterzzz #1{\chapterzzz1678,55074 +{\chapternofonts%nofonts%1687,55470 +\global\let\section = \numberedsec=1692,55623 +\global\let\subsection = \numberedsubsec=1693,55658 +\global\let\subsubsection = \numberedsubsubsec=1694,55699 +\outer\def\appendix{\appendix1697,55750 +\def\appendixzzz #1{\appendixzzz1698,55793 +\global\advance \appendixno by 1 \message{no1700,55870 +\chapmacro {#1}{Appendix \appendixletter}letter1701,55939 +\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56032 +{\chapternofonts%nofonts%1705,56104 + {#1}{Appendix \appendixletter}letter1707,56160 +\appendixnoderef %noderef1710,56260 +\global\let\section = \appendixsec=1711,56279 +\global\let\subsection = \appendixsubsec=1712,56314 +\global\let\subsubsection = \appendixsubsubsec=1713,56355 +\outer\def\top{\top1716,56406 +\outer\def\unnumbered{\unnumbered1717,56446 +\def\unnumberedzzz #1{\unnumberedzzz1718,56493 +{\chapternofonts%nofonts%1722,56656 +\global\let\section = \unnumberedsec=1727,56806 +\global\let\subsection = \unnumberedsubsec=1728,56843 +\global\let\subsubsection = \unnumberedsubsubsec=1729,56886 +\outer\def\numberedsec{\numberedsec1732,56939 +\def\seczzz #1{\seczzz1733,56980 +{\chapternofonts%nofonts%1736,57136 +\outer\def\appendixsection{\appendixsection1745,57322 +\outer\def\appendixsec{\appendixsec1746,57379 +\def\appendixsectionzzz #1{\appendixsectionzzz1747,57432 +\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57544 +{\chapternofonts%nofonts%1750,57612 +{#1}{\appendixletter}letter1752,57668 +\appendixnoderef %noderef1755,57768 +\outer\def\unnumberedsec{\unnumberedsec1759,57808 +\def\unnumberedseczzz #1{\unnumberedseczzz1760,57861 +{\chapternofonts%nofonts%1762,57956 +\outer\def\numberedsubsec{\numberedsubsec1770,58124 +\def\numberedsubseczzz #1{\numberedsubseczzz1771,58179 +{\chapternofonts%nofonts%1774,58358 +\outer\def\appendixsubsec{\appendixsubsec1783,58562 +\def\appendixsubseczzz #1{\appendixsubseczzz1784,58617 +\subsecheading {#1}{\appendixletter}letter1786,58739 +{\chapternofonts%nofonts%1787,58804 +{#1}{\appendixletter}letter1789,58863 +\appendixnoderef %noderef1792,58978 +\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59018 +\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59077 +{\chapternofonts%nofonts%1799,59178 +\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59349 +\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59410 +{\chapternofonts%nofonts%1812,59607 +\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59840 +\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59901 + {\appendixletter}letter1827,60040 +{\chapternofonts%nofonts%1828,60106 + {\appendixletter}letter1830,60171 +\appendixnoderef %noderef1834,60305 +\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60345 +\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60410 +{\chapternofonts%nofonts%1841,60517 +\def\infotop{\infotop1851,60846 +\def\infounnumbered{\infounnumbered1852,60884 +\def\infounnumberedsec{\infounnumberedsec1853,60929 +\def\infounnumberedsubsec{\infounnumberedsubsec1854,60980 +\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61037 +\def\infoappendix{\infoappendix1857,61101 +\def\infoappendixsec{\infoappendixsec1858,61142 +\def\infoappendixsubsec{\infoappendixsubsec1859,61189 +\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61242 +\def\infochapter{\infochapter1862,61302 +\def\infosection{\infosection1863,61341 +\def\infosubsection{\infosubsection1864,61380 +\def\infosubsubsection{\infosubsubsection1865,61425 +\global\let\section = \numberedsec=1870,61662 +\global\let\subsection = \numberedsubsec=1871,61697 +\global\let\subsubsection = \numberedsubsubsec=1872,61738 +\def\majorheading{\majorheading1886,62245 +\def\majorheadingzzz #1{\majorheadingzzz1887,62290 +\def\chapheading{\chapheading1893,62523 +\def\chapheadingzzz #1{\chapheadingzzz1894,62566 +\def\heading{\heading1899,62761 +\def\subheading{\subheading1901,62798 +\def\subsubheading{\subsubheading1903,62841 +\def\dobreak#1#2{\dobreak1910,63118 +\def\setchapterstyle #1 {\setchapterstyle1912,63196 +\def\chapbreak{\chapbreak1919,63451 +\def\chappager{\chappager1920,63501 +\def\chapoddpage{\chapoddpage1921,63539 +\def\setchapternewpage #1 {\setchapternewpage1923,63618 +\def\CHAPPAGoff{\CHAPPAGoff1925,63675 +\def\CHAPPAGon{\CHAPPAGon1929,63769 +\global\def\HEADINGSon{\HEADINGSon1932,63860 +\def\CHAPPAGodd{\CHAPPAGodd1934,63902 +\global\def\HEADINGSon{\HEADINGSon1937,63998 +\def\CHAPFplain{\CHAPFplain1941,64052 +\def\chfplain #1#2{\chfplain1945,64144 +\def\unnchfplain #1{\unnchfplain1956,64367 +\def\unnchfopen #1{\unnchfopen1964,64596 +\def\chfopen #1#2{\chfopen1970,64804 +\def\CHAPFopen{\CHAPFopen1975,64948 +\def\subsecheadingbreak{\subsecheadingbreak1982,65166 +\def\secheadingbreak{\secheadingbreak1985,65295 +\def\secheading #1#2#3{\secheading1993,65577 +\def\plainsecheading #1{\plainsecheading1994,65633 +\def\secheadingi #1{\secheadingi1995,65676 +\def\subsecheading #1#2#3#4{\subsecheading2006,66044 +\def\subsecheadingi #1{\subsecheadingi2007,66111 +\def\subsubsecfonts{\subsubsecfonts2014,66408 +\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66531 +\def\subsubsecheadingi #1{\subsubsecheadingi2018,66609 +\def\startcontents#1{\startcontents2032,67081 + \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67354 +\outer\def\contents{\contents2049,67713 +\outer\def\summarycontents{\summarycontents2057,67857 + \def\secentry ##1##2##3##4{\secentry2067,68228 + \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68263 + \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68298 + \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68339 + \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68377 + \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68424 +\def\chapentry#1#2#3{\chapentry2085,68858 +\def\shortchapentry#1#2#3{\shortchapentry2088,68975 + {#2\labelspace #1}space2091,69085 +\def\unnumbchapentry#1#2{\unnumbchapentry2094,69139 +\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69186 +\def\secentry#1#2#3#4{\secentry2102,69350 +\def\unnumbsecentry#1#2{\unnumbsecentry2103,69409 +\def\subsecentry#1#2#3#4#5{\subsecentry2106,69470 +\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69540 +\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69614 + \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69648 +\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69699 +\def\dochapentry#1#2{\dochapentry2123,70073 +\def\dosecentry#1#2{\dosecentry2138,70678 +\def\dosubsecentry#1#2{\dosubsecentry2145,70856 +\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71041 +\def\labelspace{\labelspace2160,71292 +\def\dopageno#1{\dopageno2162,71327 +\def\doshortpageno#1{\doshortpageno2163,71353 +\def\chapentryfonts{\chapentryfonts2165,71385 +\def\secentryfonts{\secentryfonts2166,71420 +\def\point{\point2192,72379 +\def\result{\result2194,72400 +\def\expansion{\expansion2195,72473 +\def\print{\print2196,72544 +\def\equiv{\equiv2198,72611 +\def\error{\error2218,73384 +\def\tex{\tex2224,73613 +\def\@{\@2242,73996 +\gdef\sepspaces{\def {\ }}}\2265,74728 +\def\aboveenvbreak{\aboveenvbreak2268,74810 +\def\afterenvbreak{\afterenvbreak2272,74976 +\def\ctl{\ctl2286,75487 +\def\ctr{\ctr2287,75559 +\def\cbl{\cbl2288,75598 +\def\cbr{\cbr2289,75638 +\def\carttop{\carttop2290,75677 +\def\cartbot{\cartbot2293,75785 +\long\def\cartouche{\cartouche2299,75925 +\def\Ecartouche{\Ecartouche2326,76713 +\def\lisp{\lisp2338,76848 +\def\Elisp{\Elisp2348,77195 +\def\next##1{\next2360,77521 +\def\Eexample{\Eexample2364,77563 +\def\Esmallexample{\Esmallexample2367,77610 +\def\smalllispx{\smalllispx2373,77788 +\def\Esmalllisp{\Esmalllisp2383,78142 +\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78498 +\def\next##1{\next2397,78555 +\def\display{\display2401,78635 +\def\Edisplay{\Edisplay2410,78954 +\def\next##1{\next2422,79265 +\def\format{\format2426,79368 +\def\Eformat{\Eformat2434,79664 +\def\next##1{\next2437,79753 +\def\flushleft{\flushleft2441,79805 +\def\Eflushleft{\Eflushleft2451,80176 +\def\next##1{\next2454,80269 +\def\flushright{\flushright2456,80291 +\def\Eflushright{\Eflushright2466,80663 +\def\next##1{\next2470,80794 +\def\quotation{\quotation2474,80852 +\def\Equotation{\Equotation2480,81044 +\def\setdeffont #1 {\setdeffont2493,81442 +\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81488 +\newskip\defargsindent \defargsindent=50ptargsindent2496,81531 +\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81574 +\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81617 +\def\activeparens{\activeparens2503,81815 +\def\opnr{\opnr2529,83027 +\def\lbrb{\lbrb2530,83092 +\def\defname #1#2{\defname2536,83293 +\advance\dimen2 by -\defbodyindentbodyindent2540,83411 +\advance\dimen3 by -\defbodyindentbodyindent2542,83465 +\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83519 +\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83661 +\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83736 +\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84105 +\advance\leftskip by -\defbodyindentbodyindent2557,84239 +\exdentamount=\defbodyindentbodyindent2558,84276 +\def\defparsebody #1#2#3{\defparsebody2568,84635 +\def#1{2572,84819 +\def#2{2573,84855 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84927 +\exdentamount=\defbodyindentbodyindent2576,85001 +\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85105 +\def#1{2585,85266 +\def#2##1 {2586,85302 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85385 +\exdentamount=\defbodyindentbodyindent2589,85459 +\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85544 +\def#1{2596,85705 +\def#2##1 ##2 {2597,85741 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85841 +\exdentamount=\defbodyindentbodyindent2601,85915 +\def\defvarparsebody #1#2#3{\defvarparsebody2608,86186 +\def#1{2612,86373 +\def#2{2613,86409 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86468 +\exdentamount=\defbodyindentbodyindent2616,86542 +\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86633 +\def#1{2625,86792 +\def#2##1 {2626,86828 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86898 +\exdentamount=\defbodyindentbodyindent2629,86972 +\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87044 +\def#1{2636,87208 +\def#2##1 ##2 {2637,87244 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87331 +\exdentamount=\defbodyindentbodyindent2641,87405 +\def\defunargs #1{\defunargs2664,88165 +\def\deftypefunargs #1{\deftypefunargs2676,88547 +\def\deffn{\deffn2690,88929 +\def\deffnheader #1#2#3{\deffnheader2692,88986 +\begingroup\defname {name2693,89034 +\def\defun{\defun2699,89179 +\def\defunheader #1#2{\defunheader2701,89232 +\begingroup\defname {name2702,89307 +\defunargs {unargs2703,89343 +\def\deftypefun{\deftypefun2709,89491 +\def\deftypefunheader #1#2{\deftypefunheader2712,89613 +\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89722 +\begingroup\defname {name2716,89814 +\deftypefunargs {typefunargs2717,89860 +\def\deftypefn{\deftypefn2723,90031 +\def\deftypefnheader #1#2#3{\deftypefnheader2726,90180 +\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90316 +\begingroup\defname {name2730,90409 +\deftypefunargs {typefunargs2731,90449 +\def\defmac{\defmac2737,90570 +\def\defmacheader #1#2{\defmacheader2739,90627 +\begingroup\defname {name2740,90703 +\defunargs {unargs2741,90736 +\def\defspec{\defspec2747,90860 +\def\defspecheader #1#2{\defspecheader2749,90921 +\begingroup\defname {name2750,90998 +\defunargs {unargs2751,91038 +\def\deffnx #1 {\deffnx2758,91233 +\def\defunx #1 {\defunx2759,91290 +\def\defmacx #1 {\defmacx2760,91347 +\def\defspecx #1 {\defspecx2761,91406 +\def\deftypefnx #1 {\deftypefnx2762,91467 +\def\deftypeunx #1 {\deftypeunx2763,91532 +\def\defop #1 {\defop2769,91678 +\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91713 +\def\defopheader #1#2#3{\defopheader2772,91767 +\begingroup\defname {name2774,91856 +\defunargs {unargs2775,91902 +\def\defmethod{\defmethod2780,91963 +\def\defmethodheader #1#2#3{\defmethodheader2782,92036 +\begingroup\defname {name2784,92124 +\defunargs {unargs2785,92164 +\def\defcv #1 {\defcv2790,92238 +\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92273 +\def\defcvarheader #1#2#3{\defcvarheader2793,92332 +\begingroup\defname {name2795,92418 +\defvarargs {varargs2796,92464 +\def\defivar{\defivar2801,92537 +\def\defivarheader #1#2#3{\defivarheader2803,92600 +\begingroup\defname {name2805,92686 +\defvarargs {varargs2806,92737 +\def\defopx #1 {\defopx2812,92886 +\def\defmethodx #1 {\defmethodx2813,92943 +\def\defcvx #1 {\defcvx2814,93008 +\def\defivarx #1 {\defivarx2815,93065 +\def\defvarargs #1{\defvarargs2822,93336 +\def\defvr{\defvr2828,93480 +\def\defvrheader #1#2#3{\defvrheader2830,93535 +\begingroup\defname {name2831,93583 +\def\defvar{\defvar2835,93668 +\def\defvarheader #1#2{\defvarheader2837,93728 +\begingroup\defname {name2838,93799 +\defvarargs {varargs2839,93835 +\def\defopt{\defopt2844,93901 +\def\defoptheader #1#2{\defoptheader2846,93961 +\begingroup\defname {name2847,94032 +\defvarargs {varargs2848,94071 +\def\deftypevar{\deftypevar2853,94128 +\def\deftypevarheader #1#2{\deftypevarheader2856,94244 +\begingroup\defname {name2858,94327 +\def\deftypevr{\deftypevr2865,94501 +\def\deftypevrheader #1#2#3{\deftypevrheader2867,94572 +\begingroup\defname {name2868,94624 +\def\defvrx #1 {\defvrx2876,94861 +\def\defvarx #1 {\defvarx2877,94918 +\def\defoptx #1 {\defoptx2878,94977 +\def\deftypevarx #1 {\deftypevarx2879,95036 +\def\deftypevrx #1 {\deftypevrx2880,95103 +\def\deftpargs #1{\deftpargs2885,95252 +\def\deftp{\deftp2889,95332 +\def\deftpheader #1#2#3{\deftpheader2891,95387 +\begingroup\defname {name2892,95435 +\def\deftpx #1 {\deftpx2897,95594 +\def\setref#1{\setref2908,95915 +\def\unnumbsetref#1{\unnumbsetref2913,96029 +\def\appendixsetref#1{\appendixsetref2918,96136 +\def\pxref#1{\pxref2929,96547 +\def\xref#1{\xref2930,96583 +\def\ref#1{\ref2931,96618 +\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96648 +\def\printedmanual{\printedmanual2933,96691 +\def\printednodename{\printednodename2934,96729 +\def\printednodename{\printednodename2939,96854 +section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97487 +\refx{x2957,97565 +\def\dosetq #1#2{\dosetq2965,97785 +\def\internalsetq #1#2{\internalsetq2973,98043 +\def\Ypagenumber{\Ypagenumber2977,98144 +\def\Ytitle{\Ytitle2979,98170 +\def\Ynothing{\Ynothing2981,98197 +\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98214 +\def\Yappendixletterandtype{\Yappendixletterandtype2992,98530 +\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98560 +\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98615 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98719 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98790 + \def\linenumber{\linenumber3009,99129 +\def\refx#1#2{\refx3015,99313 +\def\xrdef #1#2{\xrdef3037,99939 +\def\readauxfile{\readauxfile3040,100024 +\def\supereject{\supereject3110,101805 +\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102490 +\def\openindices{\openindices3139,102676 +\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102901 +\parindent = \defaultparindentaultparindent3152,102953 +\def\smallbook{\smallbook3175,103677 +\global\def\Esmallexample{\Esmallexample3192,104104 +\def\afourpaper{\afourpaper3196,104195 +\def\finalout{\finalout3224,105003 +\def\normaldoublequote{\normaldoublequote3235,105264 +\def\normaltilde{\normaltilde3236,105290 +\def\normalcaret{\normalcaret3237,105310 +\def\normalunderscore{\normalunderscore3238,105330 +\def\normalverticalbar{\normalverticalbar3239,105355 +\def\normalless{\normalless3240,105381 +\def\normalgreater{\normalgreater3241,105400 +\def\normalplus{\normalplus3242,105422 +\def\ifusingtt#1#2{\ifusingtt3253,105914 +\def\activedoublequote{\activedoublequote3261,106242 +\def~{~3264,106328 +\def^{^3267,106389 +\def_{_3270,106428 +\def\_{\_3272,106502 +\def\lvvmode{\lvvmode3279,106839 +\def|{|3282,106889 +\def<{<3285,106952 +\def>{>3288,107009 +\def+{+3290,107047 +\def\turnoffactive{\turnoffactive3296,107208 +\global\def={=3307,107494 +\def\normalbackslash{\normalbackslash3321,107876 + +c-src/c.c,76 +T f(1,0 +}T i;2,14 +void bar(5,69 +int foobar(6,94 +interface_locate(9,131 + +c.c,1663 +my_printf 135, +void fatala 138, +max 141, +struct bar 143, +__attribute__ ((always_inline)) max 147, +struct foo150, +char stack[stack155, +struct S 156, +} wait_status_ptr_t 161, +Some_Class A 162, +typedef T1 T3 163, +T3 z 164, +typedef int more_aligned_int 165, +struct S __attribute__ ((vector_size (16))) foo;166, +int foo 167, +char *__attribute__((aligned(8))) *f;f168, +int i 169, +extern void foobar 170, +typedef struct cacheLRUEntry_s172, +__attribute__ ((packed)) cacheLRUEntry_t;177, +struct foo 178, + f1 183, +void f2 184, +int x 188, +struct foo 189, +short array[array190, +int f193, +DEAFUN 196, +XDEFUN 203, +DEFUN ("x-get-selection-internal", Fx_get_selection_internal,x-get-selection-internal206, + Fx_get_selection_internal,x-get-selection-internal212, + Fy_get_selection_internal,y-get-selection-internal216, +defun_func1(218, +DEFUN_func2(220, +typedef int bool;222, +bool funcboo 223, +struct my_struct 226, +typedef struct my_struct my_typedef;228, +int bla 229, +a(234, +int func1237, +static struct cca_control init_control 239, +static tpcmd rbtp 240, +static byte ring1 241, +static byte ring2 242, +request request 243, +int func2 246, + aaa;249, + bbb;251, +struct sss1 252, +struct sss2253, + struct ss3255, +struct a b;259, +struct aa *b;b260, + **b;b262, +caccacacca 263, +a 267, + typedef struct aa 269, + typedef struct aa {} aaa;269, +static void inita 271, +node *lasta lasta272, +b 273, + typedef int bb;275, +static void initb 277, +node *lastb lastb278, +typedef enum { REG_ENOSYS 279, +typedef enum { REG_ENOSYS = -1, aa 279, +typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;279, + +c-src/a/b/b.c,18 +#define this 1,0 + +../c/c.web,20 +#define questo 34, + +y-src/parse.y,738 +#define obstack_chunk_alloc 46,1116 +#define obstack_chunk_free 47,1154 +VOIDSTAR parse_hash;63,1405 +unsigned char fnin[fnin67,1524 +#define YYSTYPE 71,1622 +typedef struct node *YYSTYPE;YYSTYPE72,1653 +YYSTYPE parse_return;73,1683 +char *instr;instr80,1795 +int parse_error 81,1808 +line:line86,1867 +exp:exp94,1980 +exp_list:exp_list262,5647 +range_exp:range_exp268,5745 +range_exp_list:range_exp_list272,5775 +cell:cell278,5893 +yyerror FUN1(285,5940 +make_list FUN2(292,6020 +#define ERROR 303,6220 +yylex FUN0(314,6397 +parse_cell_or_range FUN2(586,11763 +#define CK_ABS_R(670,13205 +#define CK_REL_R(674,13284 +#define CK_ABS_C(679,13413 +#define CK_REL_C(683,13492 +#define MAYBEREL(688,13621 +str_to_col FUN1(846,16822 + +y-src/parse.c,520 +#define YYBISON 4,64 +# define NE 6,114 +# define LE 7,130 +# define GE 8,146 +# define NEG 9,162 +# define L_CELL 10,179 +# define L_RANGE 11,199 +# define L_VAR 12,220 +# define L_CONST 13,239 +# define L_FN0 14,260 +# define L_FN1 15,279 +# define L_FN2 16,298 +# define L_FN3 17,317 +# define L_FN4 18,336 +# define L_FNN 19,355 +# define L_FN1R 20,374 +# define L_FN2R 21,394 +# define L_FN3R 22,414 +# define L_FN4R 23,434 +# define L_FNNR 24,454 +# define L_LE 25,474 +# define L_NE 26,492 +# define L_GE 27,510 + +parse.y,1181 +#define obstack_chunk_alloc 46, +#define obstack_chunk_free 47, +VOIDSTAR parse_hash;63, +unsigned char fnin[fnin67, +#define YYSTYPE 71, +typedef struct node *YYSTYPE;YYSTYPE72, +YYSTYPE parse_return;73, +char *instr;instr80, +int parse_error 81, +#define YYSTYPE 85, +# define YYDEBUG 88, +#define YYFINAL 93, +#define YYFLAG 94, +#define YYNTBASE 95, +#define YYTRANSLATE(98, +static const char yytranslate[yytranslate101, +static const short yyprhs[yyprhs134, +static const short yyrhs[yyrhs142, +static const short yyrline[yyrline171, +static const char *const yytname[yytname185, +static const short yyr1[yyr1197, +static const short yyr2[yyr2207, +static const short yydefact[yydefact219, +static const short yydefgoto[yydefgoto237, +static const short yypact[yypact242, +static const short yypgoto[yypgoto260, +#define YYLAST 266, +static const short yytable[yytable269, +static const short yycheck[yycheck330, +yyerror FUN1(285, +make_list FUN2(292, +#define ERROR 303, +yylex FUN0(314, +parse_cell_or_range FUN2(586, +#define CK_ABS_R(670, +#define CK_REL_R(674, +#define CK_ABS_C(679, +#define CK_REL_C(683, +#define MAYBEREL(688, +str_to_col FUN1(846, + +/usr/share/bison/bison.simple,2110 +# define YYSTD(40, +# define YYSTD(42, +# define YYSTACK_ALLOC 50, +# define YYSIZE_T 51, +# define YYSTACK_ALLOC 55, +# define YYSIZE_T 56, +# define YYSTACK_ALLOC 59, +# define YYSTACK_FREE(67, +# define YYSIZE_T 71, +# define YYSIZE_T 75, +# define YYSTACK_ALLOC 78, +# define YYSTACK_FREE 79, +union yyalloc83, +# define YYSTACK_GAP_MAX 93, +# define YYSTACK_BYTES(98, +# define YYSTACK_BYTES(102, +# define YYSTACK_RELOCATE(112, +# define YYSIZE_T 128, +# define YYSIZE_T 131, +# define YYSIZE_T 136, +# define YYSIZE_T 140, +# define YYSIZE_T 145, +#define yyerrok 148, +#define yyclearin 149, +#define YYEMPTY 150, +#define YYEOF 151, +#define YYACCEPT 152, +#define YYABORT 153, +#define YYERROR 154, +#define YYFAIL 158, +#define YYRECOVERING(159, +#define YYBACKUP(160, +#define YYTERROR 177, +#define YYERRCODE 178, +# define YYLLOC_DEFAULT(189, +# define YYLEX 200, +# define YYLEX 202, +# define YYLEX 206, +# define YYLEX 208, +# define YYLEX 212, +# define YYFPRINTF 225, +# define YYDPRINTF(228, +int yydebug;237, +# define YYDPRINTF(239, +# define YYINITDEPTH 244, +# undef YYMAXDEPTH255, +# define YYMAXDEPTH 259, +# define yymemcpy 264, +yymemcpy 271, +# define yystrlen 293, +yystrlen 298, +# define yystpcpy 316, +yystpcpy 322, +# define YYPARSE_PARAM_ARG 351, +# define YYPARSE_PARAM_DECL352, +# define YYPARSE_PARAM_ARG 354, +# define YYPARSE_PARAM_DECL 355, +# define YYPARSE_PARAM_ARG358, +# define YYPARSE_PARAM_DECL359, +#define YY_DECL_NON_LSP_VARIABLES 374, +# define YY_DECL_VARIABLES 385, +# define YY_DECL_VARIABLES 391, +yyparse 403, +# define YYPOPSTACK 445, +# define YYPOPSTACK 447, +# undef YYSTACK_RELOCATE548, + *++yyvsp yyvsp746, + *++yylsp yylsp748, + yyn 755, + yystate 757, + yystate 761, + goto yynewstate;763, + goto yyerrlab1;823, + yyerrstatus 846, + goto yyerrhandle;848, + yyn 861, + yystate 875, + yyn 895, + yyn 903, + *++yyvsp yyvsp919, + *++yylsp yylsp921, + yystate 924, + goto yynewstate;925, + yyresult 932, + goto yyreturn;933, + yyresult 939, + goto yyreturn;940, + yyresult 947, + +y-src/atest.y,9 +exp 2,3 + +y-src/cccp.c,303 +#define YYBISON 4,63 +# define INT 6,113 +# define CHAR 7,130 +# define NAME 8,148 +# define ERROR 9,166 +# define OR 10,185 +# define AND 11,201 +# define EQUAL 12,218 +# define NOTEQUAL 13,237 +# define LEQ 14,259 +# define GEQ 15,276 +# define LSH 16,293 +# define RSH 17,310 +# define UNARY 18,327 + +cccp.y,1579 +typedef unsigned char U_CHAR;38, +struct arglist 41, +#define NULL 51, +#define GENERIC_PTR 56, +#define GENERIC_PTR 58, +#define NULL_PTR 63, +int expression_value;68, +static jmp_buf parse_return_error;70, +static int keyword_parsing 73, +#define CHAR_TYPE_SIZE 87, +#define INT_TYPE_SIZE 91, +#define LONG_TYPE_SIZE 95, +#define WCHAR_TYPE_SIZE 99, +#define possible_sum_sign(104, + struct constant 113, + struct name 114, +} yystype;118, +# define YYSTYPE 119, +# define YYDEBUG 122, +#define YYFINAL 127, +#define YYFLAG 128, +#define YYNTBASE 129, +#define YYTRANSLATE(132, +static const char yytranslate[yytranslate135, +static const short yyprhs[yyprhs167, +static const short yyrhs[yyrhs174, +static const short yyrline[yyrline195, +static const char *const yytname[yytname208, +static const short yyr1[yyr1219, +static const short yyr2[yyr2228, +static const short yydefact[yydefact239, +static const short yydefgoto[yydefgoto251, +static const short yypact[yypact256, +static const short yypgoto[yypgoto268, +#define YYLAST 274, +static const short yytable[yytable277, +static const short yycheck[yycheck301, +static char *lexptr;lexptr332, +parse_number 341, +struct token 437, +static struct token tokentab2[tokentab2442, +yylex 459, +parse_escape 740, +yyerror 836, +integer_overflow 844, +left_shift 851, +right_shift 873, +parse_c_expression 893, +main 923, +unsigned char is_idchar[is_idchar948, +unsigned char is_idstart[is_idstart950, +char is_hor_space[is_hor_space953, +initialize_random_junk 958, +error 988, +warning 993, +lookup 999, + +/usr/share/bison/bison.simple,2110 +# define YYSTD(41, +# define YYSTD(43, +# define YYSTACK_ALLOC 51, +# define YYSIZE_T 52, +# define YYSTACK_ALLOC 56, +# define YYSIZE_T 57, +# define YYSTACK_ALLOC 60, +# define YYSTACK_FREE(68, +# define YYSIZE_T 72, +# define YYSIZE_T 76, +# define YYSTACK_ALLOC 79, +# define YYSTACK_FREE 80, +union yyalloc84, +# define YYSTACK_GAP_MAX 94, +# define YYSTACK_BYTES(99, +# define YYSTACK_BYTES(103, +# define YYSTACK_RELOCATE(113, +# define YYSIZE_T 129, +# define YYSIZE_T 132, +# define YYSIZE_T 137, +# define YYSIZE_T 141, +# define YYSIZE_T 146, +#define yyerrok 149, +#define yyclearin 150, +#define YYEMPTY 151, +#define YYEOF 152, +#define YYACCEPT 153, +#define YYABORT 154, +#define YYERROR 155, +#define YYFAIL 159, +#define YYRECOVERING(160, +#define YYBACKUP(161, +#define YYTERROR 178, +#define YYERRCODE 179, +# define YYLLOC_DEFAULT(190, +# define YYLEX 201, +# define YYLEX 203, +# define YYLEX 207, +# define YYLEX 209, +# define YYLEX 213, +# define YYFPRINTF 226, +# define YYDPRINTF(229, +int yydebug;238, +# define YYDPRINTF(240, +# define YYINITDEPTH 245, +# undef YYMAXDEPTH256, +# define YYMAXDEPTH 260, +# define yymemcpy 265, +yymemcpy 272, +# define yystrlen 294, +yystrlen 299, +# define yystpcpy 317, +yystpcpy 323, +# define YYPARSE_PARAM_ARG 351, +# define YYPARSE_PARAM_DECL352, +# define YYPARSE_PARAM_ARG 354, +# define YYPARSE_PARAM_DECL 355, +# define YYPARSE_PARAM_ARG358, +# define YYPARSE_PARAM_DECL359, +#define YY_DECL_NON_LSP_VARIABLES 374, +# define YY_DECL_VARIABLES 385, +# define YY_DECL_VARIABLES 391, +yyparse 403, +# define YYPOPSTACK 445, +# define YYPOPSTACK 447, +# undef YYSTACK_RELOCATE548, + *++yyvsp yyvsp746, + *++yylsp yylsp748, + yyn 755, + yystate 757, + yystate 761, + goto yynewstate;763, + goto yyerrlab1;823, + yyerrstatus 846, + goto yyerrhandle;848, + yyn 861, + yystate 875, + yyn 895, + yyn 903, + *++yyvsp yyvsp919, + *++yylsp yylsp921, + yystate 924, + goto yynewstate;925, + yyresult 932, + goto yyreturn;933, + yyresult 939, + goto yyreturn;940, + yyresult 947, + +y-src/cccp.y,1107 +typedef unsigned char U_CHAR;38,1201 +struct arglist 41,1301 +#define NULL 51,1468 +#define GENERIC_PTR 56,1578 +#define GENERIC_PTR 58,1611 +#define NULL_PTR 63,1670 +int expression_value;68,1743 +static jmp_buf parse_return_error;70,1766 +static int keyword_parsing 73,1865 +#define CHAR_TYPE_SIZE 87,2162 +#define INT_TYPE_SIZE 91,2229 +#define LONG_TYPE_SIZE 95,2296 +#define WCHAR_TYPE_SIZE 99,2365 +#define possible_sum_sign(104,2556 + struct constant 112,2733 + struct name 113,2789 +start 143,3226 +exp1 148,3330 +exp 156,3505 +exp 185,4295 +keywords 306,7835 +static char *lexptr;lexptr332,8579 +parse_number 341,8842 +struct token 437,11038 +static struct token tokentab2[tokentab2442,11088 +yylex 459,11367 +parse_escape 740,17718 +yyerror 836,19599 +integer_overflow 844,19690 +left_shift 851,19804 +right_shift 873,20194 +parse_c_expression 893,20732 +main 923,21483 +unsigned char is_idchar[is_idchar948,21901 +unsigned char is_idstart[is_idstart950,21996 +char is_hor_space[is_hor_space953,22160 +initialize_random_junk 958,22259 +error 988,22915 +warning 993,22963 +lookup 999,23033 + +tex-src/nonewline.tex,0 + +php-src/sendmail.php,0 + +c-src/fail.c,0 + +a-src/empty.zz,0 diff --cc test/manual/etags/ETAGS.good_5 index 9e3b258eabc,00000000000..98de4f2c2fb mode 100644,000000..100644 --- a/test/manual/etags/ETAGS.good_5 +++ b/test/manual/etags/ETAGS.good_5 @@@ -1,5500 -1,0 +1,5500 @@@ + +ada-src/etags-test-for.ada,1969 + type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0 + function Body_RequiredBody_Required/f3,78 + type Type_Specific_Data Type_Specific_Data/t11,280 + function "abs"abs/f19,504 + type Barrier_Function_Pointer Barrier_Function_Pointer/t21,577 + function "="=/f27,722 + type usfreelock_ptr usfreelock_ptr/t30,803 + function p p/f33,891 + procedure LL_Wrapper LL_Wrapper/p37,1054 +function p p/f39,1094 +package Pkg1 Pkg1/s44,1203 + type Private_T Private_T/t46,1220 + package Inner1 Inner1/s48,1250 + procedure Private_T;Private_T/p49,1270 + package Inner2 Inner2/s52,1310 + task Private_T;Private_T/k53,1330 + type Public_T Public_T/t56,1365 + procedure Pkg1_Proc1;Pkg1_Proc1/p62,1450 + procedure Pkg1_Proc2 Pkg1_Proc2/p64,1475 + function Pkg1_Func1 Pkg1_Func1/f66,1514 + function Pkg1_Func2 Pkg1_Func2/f68,1553 + package Pkg1_Pkg1 Pkg1_Pkg1/s71,1622 + procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p72,1645 + task type Task_Type Task_Type/k75,1694 + type Private_T Private_T/t82,1786 +package body Pkg1 Pkg1/b89,1882 + procedure Pkg1_Proc1 Pkg1_Proc1/p91,1904 + package body Inner1 Inner1/b96,1956 + procedure Private_T Private_T/p97,1981 + package body Inner2 Inner2/b103,2054 + task body Private_T Private_T/b104,2079 + task body Task_Type Task_Type/b112,2181 + procedure Pkg1_Proc2 Pkg1_Proc2/p126,2367 + function Pkg1_Func1 Pkg1_Func1/f132,2445 + function Pkg1_Func2 Pkg1_Func2/f134,2496 + package body Pkg1_Pkg1 Pkg1_Pkg1/b140,2596 +package body Pkg1_Pkg1 Pkg1_Pkg1/b146,2663 + procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p147,2689 +function Pkg1_Func1 Pkg1_Func1/f155,2778 +package Truc Truc/s162,2887 +package Truc.Bidule Truc.Bidule/s166,2929 + protected Bidule Bidule/t168,2953 + protected type Machin_T Machin_T/t172,3007 +package body Truc.Bidule Truc.Bidule/b178,3087 + protected body Bidule Bidule/b179,3115 + protected Machin_T Machin_T/t186,3207 + +ada-src/2ataspri.adb,2190 +package body System.Task_Primitives System.Task_Primitives/b64,2603 + package RTE RTE/s69,2712 + package TSL TSL/s70,2759 + function To_void_ptr To_void_ptr/f86,3287 + function To_TCB_Ptr To_TCB_Ptr/f89,3366 + function pthread_mutexattr_setprotocolpthread_mutexattr_setprotocol/f92,3444 + function pthread_mutexattr_setprio_ceilingpthread_mutexattr_setprio_ceiling/f99,3728 + procedure Abort_WrapperAbort_Wrapper/p115,4302 + procedure LL_Wrapper LL_Wrapper/p122,4526 + procedure Initialize_LL_Tasks Initialize_LL_Tasks/p131,4830 + function Self Self/f160,5586 + procedure Initialize_LockInitialize_Lock/p174,5958 + procedure Finalize_Lock Finalize_Lock/p210,6927 + procedure Write_Lock Write_Lock/p226,7338 + procedure Read_Lock Read_Lock/p239,7700 + procedure Unlock Unlock/p246,7850 + procedure Initialize_Cond Initialize_Cond/p258,8160 + procedure Finalize_Cond Finalize_Cond/p286,8979 + procedure Cond_Wait Cond_Wait/p300,9303 + procedure Cond_Timed_WaitCond_Timed_Wait/p312,9661 + procedure Cond_Signal Cond_Signal/p343,10510 + procedure Set_PrioritySet_Priority/p355,10836 + procedure Set_Own_Priority Set_Own_Priority/p372,11243 + function Get_Priority Get_Priority/f385,11598 + function Get_Own_Priority Get_Own_Priority/f398,12023 + procedure Create_LL_TaskCreate_LL_Task/p412,12438 + function To_Start_Addr To_Start_Addr/f426,12873 + procedure Exit_LL_Task Exit_LL_Task/p491,14995 + procedure Abort_Task Abort_Task/p500,15158 + procedure Test_Abort Test_Abort/p518,15716 + procedure Install_Abort_Handler Install_Abort_Handler/p527,15878 + procedure Abort_WrapperAbort_Wrapper/p557,16939 + function Address_To_Call_State Address_To_Call_State/f562,17062 + procedure Install_Error_Handler Install_Error_Handler/p573,17351 + procedure LL_Assert LL_Assert/p599,18146 + procedure LL_Wrapper LL_Wrapper/p608,18299 + procedure Initialize_TAS_Cell Initialize_TAS_Cell/p630,19010 + procedure Finalize_TAS_Cell Finalize_TAS_Cell/p635,19129 + procedure Clear Clear/p640,19236 + procedure Test_And_Set Test_And_Set/p645,19330 + function Is_Set Is_Set/f659,19676 + +ada-src/2ataspri.ads,2313 +package System.Task_Primitives System.Task_Primitives/s58,3169 + type LL_Task_Procedure_Access LL_Task_Procedure_Access/t62,3253 + type Pre_Call_State Pre_Call_State/t64,3331 + type Task_Storage_Size Task_Storage_Size/t66,3378 + type Machine_Exceptions Machine_Exceptions/t68,3433 + type Error_Information Error_Information/t70,3499 + type Lock Lock/t72,3569 + type Condition_Variable Condition_Variable/t73,3594 + type Task_Control_Block Task_Control_Block/t81,3955 + type TCB_Ptr TCB_Ptr/t89,4241 + function Address_To_TCB_Ptr Address_To_TCB_Ptr/f93,4333 + procedure Initialize_LL_Tasks Initialize_LL_Tasks/p96,4425 + function Self Self/f100,4602 + procedure Initialize_Lock Initialize_Lock/p103,4707 + procedure Finalize_Lock Finalize_Lock/p107,4879 + procedure Write_Lock Write_Lock/p111,5034 + procedure Read_Lock Read_Lock/p118,5428 + procedure Unlock Unlock/p128,5995 + procedure Initialize_Cond Initialize_Cond/p135,6300 + procedure Finalize_Cond Finalize_Cond/p138,6413 + procedure Cond_Wait Cond_Wait/p142,6591 + procedure Cond_Timed_WaitCond_Timed_Wait/p155,7396 + procedure Cond_Signal Cond_Signal/p164,7812 + procedure Set_Priority Set_Priority/p169,8040 + procedure Set_Own_Priority Set_Own_Priority/p173,8200 + function Get_Priority Get_Priority/f177,8348 + function Get_Own_Priority Get_Own_Priority/f181,8504 + procedure Create_LL_TaskCreate_LL_Task/p185,8647 + procedure Exit_LL_Task;Exit_LL_Task/p198,9282 + procedure Abort_Task Abort_Task/p203,9516 + procedure Test_Abort;Test_Abort/p210,9878 + type Abort_Handler_Pointer Abort_Handler_Pointer/t217,10233 + procedure Install_Abort_Handler Install_Abort_Handler/p219,10312 + procedure Install_Error_Handler Install_Error_Handler/p226,10741 + procedure LL_Assert LL_Assert/p231,10983 + type Proc Proc/t238,11240 + type TAS_Cell TAS_Cell/t242,11328 + procedure Initialize_TAS_Cell Initialize_TAS_Cell/p249,11670 + procedure Finalize_TAS_Cell Finalize_TAS_Cell/p255,11941 + procedure Clear Clear/p260,12157 + procedure Test_And_Set Test_And_Set/p267,12462 + function Is_Set Is_Set/f275,12877 + type Lock Lock/t283,13155 + type Condition_Variable Condition_Variable/t288,13267 + type TAS_Cell TAS_Cell/t293,13389 + +ada-src/waroquiers.ada,1503 +package Pkg1 Pkg1/s3,89 + type Private_T Private_T/t5,106 + package Inner1 Inner1/s7,136 + procedure Private_T;Private_T/p8,156 + package Inner2 Inner2/s11,196 + task Private_T;Private_T/k12,216 + type Public_T Public_T/t15,251 + procedure Pkg1_Proc1;Pkg1_Proc1/p21,336 + procedure Pkg1_Proc2 Pkg1_Proc2/p23,361 + function Pkg1_Func1 Pkg1_Func1/f25,400 + function Pkg1_Func2 Pkg1_Func2/f27,439 + package Pkg1_Pkg1 Pkg1_Pkg1/s30,508 + procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p31,531 + task type Task_Type Task_Type/k34,580 + type Private_T Private_T/t40,671 +package body Pkg1 Pkg1/b46,766 + procedure Pkg1_Proc1 Pkg1_Proc1/p48,788 + package body Inner1 Inner1/b53,840 + procedure Private_T Private_T/p54,865 + package body Inner2 Inner2/b60,938 + task body Private_T Private_T/b61,963 + task body Task_Type Task_Type/b68,1064 + procedure Pkg1_Proc2 Pkg1_Proc2/p82,1250 + function Pkg1_Func1 Pkg1_Func1/f88,1328 + function Pkg1_Func2 Pkg1_Func2/f90,1379 + package body Pkg1_Pkg1 Pkg1_Pkg1/b96,1479 +package body Pkg1_Pkg1 Pkg1_Pkg1/b100,1544 + procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p101,1570 +function Pkg1_Func1 Pkg1_Func1/f107,1657 +package Truc Truc/s112,1764 +package Truc.Bidule Truc.Bidule/s116,1816 + protected Bidule Bidule/t125,1964 + protected type Machin_T Machin_T/t131,2046 +package body Truc.Bidule Truc.Bidule/b138,2153 + protected body Bidule Bidule/b139,2181 + protected body Machin_T Machin_T/b146,2281 + +c-src/abbrev.c,2634 +Lisp_Object Vabbrev_table_name_list;43,1424 +Lisp_Object Vglobal_abbrev_table;48,1569 +Lisp_Object Vfundamental_mode_abbrev_table;52,1680 +int abbrevs_changed;56,1781 +int abbrev_all_caps;58,1803 +Lisp_Object Vabbrev_start_location;63,1952 +Lisp_Object Vabbrev_start_location_buffer;66,2041 +Lisp_Object Vlast_abbrev;70,2150 +Lisp_Object Vlast_abbrev_text;75,2319 +int last_abbrev_point;79,2409 +Lisp_Object Vpre_abbrev_expand_hook,83,2482 +Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2482 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2546 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2738 +DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3119 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev149,4438 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4809 +DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5277 +DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6241 +DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6756 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11677 +write_abbrev 426,12884 +describe_abbrev 445,13319 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description466,13834 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table506,14990 +syms_of_abbrev 540,16067 + DEFVAR_LISP ("abbrev-table-name-list"542,16087 + DEFVAR_LISP ("global-abbrev-table"548,16349 + DEFVAR_LISP ("fundamental-mode-abbrev-table"555,16671 + DEFVAR_LISP ("last-abbrev"561,17013 + DEFVAR_LISP ("last-abbrev-text"564,17136 + DEFVAR_INT ("last-abbrev-location"568,17294 + DEFVAR_LISP ("abbrev-start-location"575,17493 + DEFVAR_LISP ("abbrev-start-location-buffer"581,17770 + DEFVAR_PER_BUFFER ("local-abbrev-table"586,18034 + DEFVAR_BOOL ("abbrevs-changed"589,18177 + DEFVAR_BOOL ("abbrev-all-caps"594,18380 + DEFVAR_LISP ("pre-abbrev-expand-hook"598,18536 + DEFVAR_LISP ("abbrev-table-name-list",\1542,16087 + DEFVAR_LISP ("global-abbrev-table",\1548,16349 + DEFVAR_LISP ("fundamental-mode-abbrev-table",\1555,16671 + DEFVAR_LISP ("last-abbrev",\1561,17013 + DEFVAR_LISP ("last-abbrev-text",\1564,17136 + DEFVAR_INT ("last-abbrev-location",\1568,17294 + DEFVAR_LISP ("abbrev-start-location",\1575,17493 + DEFVAR_LISP ("abbrev-start-location-buffer",\1581,17770 + DEFVAR_PER_BUFFER ("local-abbrev-table",\1586,18034 + DEFVAR_BOOL ("abbrevs-changed",\1589,18177 + DEFVAR_BOOL ("abbrev-all-caps",\1594,18380 + DEFVAR_LISP ("pre-abbrev-expand-hook",\1598,18536 + +c-src/torture.c,197 +(*tag1 tag118,452 +#define notag2 26,553 +(*tag2 tag229,630 +(*tag3 tag339,772 +#define notag4 45,861 +(*tag4 tag448,955 +tag5 57,1081 +tag6 66,1208 +int pp1(74,1317 +pp287,1419 +pp3(100,1518 + +c-src/getopt.h,666 +#define _GETOPT_H 19,794 +extern char *optarg;optarg31,1102 +extern int optind;45,1610 +extern int opterr;50,1736 +struct option73,2790 + const char *name;name76,2819 + char *name;name78,2845 + int has_arg;82,3002 + int *flag;flag83,3017 + int val;84,3030 +#define no_argument 89,3117 +#define required_argument 90,3140 +#define optional_argument 91,3168 +extern int getopt 98,3433 +extern int getopt 100,3537 +extern int getopt_long 102,3592 +extern int getopt_long_only 104,3724 +extern int _getopt_internal 109,3935 +extern int getopt 114,4133 +extern int getopt_long 115,4155 +extern int getopt_long_only 116,4182 +extern int _getopt_internal 118,4215 + +c-src/etags.c,14175 +char pot_etags_version[pot_etags_version81,3470 +# undef DEBUG84,3552 +# define DEBUG 85,3567 +# define DEBUG 87,3594 +# define NDEBUG 88,3617 +# define _GNU_SOURCE 94,3705 +# undef MSDOS100,3876 +# undef WINDOWSNT101,3890 +# define WINDOWSNT102,3909 +# undef MSDOS106,3968 +# define MSDOS 107,3982 +# define MSDOS 110,4032 +# define MAXPATHLEN 115,4111 +# undef HAVE_NTGUI116,4141 +# undef DOS_NT117,4160 +# define DOS_NT118,4176 +# undef assert 135,4482 +# define assert(136,4541 +# undef CTAGS146,4857 +# define CTAGS 147,4872 +# define CTAGS 149,4898 +#define streq(152,4927 +#define strcaseeq(153,4996 +#define strneq(154,5075 +#define strncaseeq(155,5151 +#define CHARS 157,5238 +#define CHAR(158,5278 +#define iswhite(159,5329 +#define notinname(160,5394 +#define begtoken(161,5469 +#define intoken(162,5542 +#define endtoken(163,5614 +#define ISALNUM(165,5684 +#define ISALPHA(166,5722 +#define ISDIGIT(167,5760 +#define ISLOWER(168,5798 +#define lowcase(170,5837 +#define xnew(179,6015 +#define xrnew(180,6083 +typedef void Lang_function 182,6164 + const char *suffix;suffix186,6219 + const char *command;command187,6294 +} compressor;188,6365 + const char *name;name192,6397 + const char *help;help193,6449 + Lang_function *function;function194,6508 + const char **suffixes;suffixes195,6556 + const char **filenames;filenames196,6633 + const char **interpreters;interpreters197,6702 + bool metasource;198,6771 +} language;199,6835 +typedef struct fdesc201,6848 + struct fdesc *next;next203,6871 + char *infname;infname204,6920 + char *infabsname;infabsname205,6973 + char *infabsdir;infabsdir206,7038 + char *taggedfname;taggedfname207,7091 + language *lang;lang208,7149 + char *prop;prop209,7191 + bool usecharno;210,7249 + bool written;211,7311 +} fdesc;212,7366 +typedef struct node_st214,7376 + struct node_st *left,left216,7428 + struct node_st *left, *right;right216,7428 + fdesc *fdp;fdp217,7486 + char *name;name218,7548 + char *regex;regex219,7580 + bool valid;220,7617 + bool is_func;221,7670 + bool been_warned;222,7733 + int lno;223,7801 + long cno;224,7842 +} node;225,7894 + long size;236,8208 + int len;237,8221 + char *buffer;buffer238,8232 +} linebuffer;239,8248 + at_language,245,8344 + at_regexp,246,8393 + at_filename,247,8437 + at_stdin,248,8473 + at_end 249,8516 + } arg_type;250,8557 + language *lang;lang251,8593 + char *what;what252,8656 +} argument;253,8698 +typedef struct regexp256,8758 + struct regexp *p_next;p_next258,8782 + language *lang;lang259,8837 + char *pattern;pattern260,8897 + char *name;name261,8940 + struct re_pattern_buffer *pat;pat262,8971 + struct re_registers regs;263,9031 + bool error_signaled;264,9078 + bool force_explicit_name;265,9141 + bool ignore_case;266,9206 + bool multi_line;267,9259 +} regexp;268,9325 +static void Ada_funcs 274,9428 +static void Asm_labels 275,9460 +static void C_entries 276,9493 +static void default_C_entries 277,9536 +static void plain_C_entries 278,9576 +static void Cjava_entries 279,9614 +static void Cobol_paragraphs 280,9650 +static void Cplusplus_entries 281,9689 +static void Cstar_entries 282,9729 +static void Erlang_functions 283,9765 +static void Forth_words 284,9804 +static void Fortran_functions 285,9838 +static void HTML_labels 286,9878 +static void Lisp_functions 287,9912 +static void Lua_functions 288,9949 +static void Makefile_targets 289,9985 +static void Pascal_functions 290,10024 +static void Perl_functions 291,10063 +static void PHP_functions 292,10100 +static void PS_functions 293,10136 +static void Prolog_functions 294,10171 +static void Python_functions 295,10210 +static void Scheme_functions 296,10249 +static void TeX_commands 297,10288 +static void Texinfo_nodes 298,10323 +static void Yacc_entries 299,10359 +static void just_read_file 300,10394 +static language *get_language_from_langname get_language_from_langname302,10432 +static void readline 303,10492 +static long readline_internal 304,10537 +static bool nocase_tail 305,10591 +static void get_tag 306,10631 +static void analyze_regex 308,10671 +static void free_regexps 309,10707 +static void regex_tag_multiline 310,10740 +static void error 311,10780 +# undef STDIN408,15073 +#define STDIN 411,15095 +static compressor compressors[compressors457,17664 +static const char *Ada_suffixes Ada_suffixes473,17907 +static const char Ada_help 475,17977 +static const char *Asm_suffixes Asm_suffixes493,18580 +static const char Asm_help 504,18976 +static const char *default_C_suffixes default_C_suffixes512,19312 +static const char default_C_help 515,19413 +static const char default_C_help 523,19850 +static const char *Cplusplus_suffixes Cplusplus_suffixes535,20460 +static const char Cplusplus_help 540,20658 +static const char *Cjava_suffixes Cjava_suffixes549,21113 +static char Cjava_help 551,21172 +static const char *Cobol_suffixes Cobol_suffixes556,21337 +static char Cobol_help 558,21402 +static const char *Cstar_suffixes Cstar_suffixes562,21543 +static const char *Erlang_suffixes Erlang_suffixes565,21607 +static const char Erlang_help 567,21673 +const char *Forth_suffixes Forth_suffixes571,21799 +static const char Forth_help 573,21857 +static const char *Fortran_suffixes Fortran_suffixes577,22008 +static const char Fortran_help 579,22085 +static const char *HTML_suffixes HTML_suffixes582,22190 +static const char HTML_help 584,22264 +static const char *Lisp_suffixes Lisp_suffixes589,22452 +static const char Lisp_help 591,22556 +static const char *Lua_suffixes Lua_suffixes598,22871 +static const char Lua_help 600,22934 +static const char *Makefile_filenames Makefile_filenames603,23010 +static const char Makefile_help 605,23133 +static const char *Objc_suffixes Objc_suffixes609,23277 +static const char Objc_help 613,23399 +static const char *Pascal_suffixes Pascal_suffixes619,23714 +static const char Pascal_help 621,23778 +static const char *Perl_suffixes Perl_suffixes626,23966 +static const char *Perl_interpreters Perl_interpreters628,24028 +static const char Perl_help 630,24100 +static const char *PHP_suffixes PHP_suffixes637,24451 +static const char PHP_help 639,24523 +static const char *plain_C_suffixes plain_C_suffixes643,24678 +static const char *PS_suffixes PS_suffixes647,24762 +static const char PS_help 649,24848 +static const char *Prolog_suffixes Prolog_suffixes652,24931 +static const char Prolog_help 654,24993 +static const char *Python_suffixes Python_suffixes658,25107 +static const char Python_help 660,25165 +static const char *Scheme_suffixes Scheme_suffixes665,25347 +static const char Scheme_help 667,25460 +static const char *TeX_suffixes TeX_suffixes672,25683 +static const char TeX_help 674,25781 +static const char *Texinfo_suffixes Texinfo_suffixes686,26316 +static const char Texinfo_help 688,26395 +static const char *Yacc_suffixes Yacc_suffixes691,26492 +static const char Yacc_help 693,26606 +static const char auto_help 699,26856 +static const char none_help 703,27020 +static const char no_lang_help 707,27143 +static language lang_names 718,27355 +print_language_names 753,29532 +# define EMACS_NAME 786,30755 +# define VERSION 789,30811 +print_version 792,30869 +# define PRINT_UNDOCUMENTED_OPTIONS_HELP 804,31173 +print_help 808,31250 +main 981,37438 +get_compressor_from_suffix 1319,46217 +get_language_from_langname 1355,47158 +get_language_from_interpreter 1377,47545 +get_language_from_filename 1399,47976 +process_file_name 1433,48834 +process_file 1555,51665 +init 1632,54150 +find_entries 1656,54901 +make_tag 1814,59707 +pfnote 1856,60942 +free_tree 1917,62744 +free_fdesc 1935,63029 +add_node 1955,63472 +invalidate_nodes 2035,65537 +static int total_size_of_entries 2067,66150 +static int number_len 2068,66193 +total_size_of_entries 2087,66694 +put_entries 2107,67154 +#define C_EXT 2193,68995 +#define C_PLAIN 2194,69037 +#define C_PLPL 2195,69070 +#define C_STAR 2196,69104 +#define C_JAVA 2197,69137 +#define C_AUTO 2198,69172 +#define YACC 2199,69242 +enum sym_type2204,69312 + st_none,2206,69328 + st_C_objprot,2207,69339 + st_C_objprot, st_C_objimpl,2207,69339 + st_C_objprot, st_C_objimpl, st_C_objend,2207,69339 + st_C_gnumacro,2208,69382 + st_C_ignore,2209,69399 + st_C_ignore, st_C_attribute,2209,69399 + st_C_javastruct,2210,69430 + st_C_operator,2211,69449 + st_C_class,2212,69466 + st_C_class, st_C_template,2212,69466 + st_C_struct,2213,69495 + st_C_struct, st_C_extern,2213,69495 + st_C_struct, st_C_extern, st_C_enum,2213,69495 + st_C_struct, st_C_extern, st_C_enum, st_C_define,2213,69495 + st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef2213,69495 +struct C_stab_entry 2271,71278 +struct C_stab_entry { const char *name;name2271,71278 +struct C_stab_entry { const char *name; int c_ext;2271,71278 +struct C_stab_entry { const char *name; int c_ext; enum sym_type type;2271,71278 +hash 2275,71409 +in_word_set 2321,72937 + TOTAL_KEYWORDS 2325,73018 + MIN_WORD_LENGTH 2326,73045 + MAX_WORD_LENGTH 2327,73072 + MIN_HASH_VALUE 2328,73100 + MAX_HASH_VALUE 2329,73126 +C_symtype 2387,74985 +static bool inattribute;2400,75234 + fvnone,2408,75435 + fdefunkey,2409,75466 + fdefunname,2410,75512 + foperator,2411,75556 + fvnameseen,2412,75613 + fstartlist,2413,75666 + finlist,2414,75722 + flistseen,2415,75765 + fignore,2416,75813 + vignore 2417,75856 +} fvdef;2418,75901 +static bool fvextern;2420,75911 + tnone,2428,76089 + tkeyseen,2429,76119 + ttypeseen,2430,76160 + tinbody,2431,76199 + tend,2432,76238 + tignore 2433,76279 +} typdef;2434,76320 + snone,2443,76499 + skeyseen,2445,76575 + stagseen,2446,76620 + scolonseen 2447,76661 +} structdef;2448,76715 +static const char *objtag objtag2453,76809 + dnone,2460,76942 + dsharpseen,2461,76972 + ddefineseen,2462,77025 + dignorerest 2463,77070 +} definedef;2464,77112 + onone,2472,77267 + oprotocol,2473,77297 + oimplementation,2474,77347 + otagseen,2475,77395 + oparenseen,2476,77431 + ocatseen,2477,77486 + oinbody,2478,77525 + omethodsign,2479,77568 + omethodtag,2480,77626 + omethodcolon,2481,77666 + omethodparm,2482,77709 + oignore 2483,77755 +} objdef;2484,77787 +static struct tok2491,77944 + char *line;line2493,77964 + int offset;2494,78014 + int length;2495,78067 + bool valid;2502,78352 + bool named;2505,78487 + int lineno;2506,78528 + long linepos;2507,78576 +} token;2508,78626 +static void pushclass_above 2514,78784 +static void popclass_above 2515,78832 +static void write_classname 2516,78866 + char **cname;cname2519,78950 + int *bracelev;bracelev2520,78993 + int nl;2521,79042 + int size;2522,79096 +} cstack;2523,79136 +#define nestlev 2525,79264 +#define instruct 2527,79369 +pushclass_above 2531,79489 +popclass_above 2550,79948 +write_classname 2564,80162 +static bool consider_token 2592,80761 +static void make_C_tag 2593,80833 +consider_token 2613,81341 + long linepos;2922,88499 + linebuffer lb;2923,88515 +} lbs[lbs2924,88532 +#define current_lb_is_new 2926,88543 +#define switch_line_buffers(2927,88588 +#define curlb 2929,88641 +#define newlb 2930,88672 +#define curlinepos 2931,88703 +#define newlinepos 2932,88744 +#define plainc 2934,88786 +#define cplpl 2935,88830 +#define cjava 2936,88861 +#define CNL_SAVE_DEFINEDEF(2938,88905 +#define CNL(2947,89117 +make_C_tag 2960,89375 +C_entries 2986,90194 +default_C_entries 3833,110156 +plain_C_entries 3840,110276 +Cplusplus_entries 3847,110364 +Cjava_entries 3854,110460 +Cstar_entries 3861,110550 +Yacc_entries 3868,110642 +#define LOOP_ON_INPUT_LINES(3875,110720 +#define LOOKING_AT(3884,111056 +#define LOOKING_AT_NOCASE(3891,111461 +just_read_file 3901,111861 +static void F_takeprec 3910,111965 +static void F_getit 3911,111996 +F_takeprec 3914,112039 +F_getit 3937,112366 +Fortran_functions 3961,112840 +Ada_getit 4052,114669 +Ada_funcs 4115,116044 +Asm_labels 4228,118582 +Perl_functions 4261,119549 +Python_functions 4357,122057 +PHP_functions 4387,122684 +Cobol_paragraphs 4466,124471 +Makefile_targets 4494,125029 +Pascal_functions 4529,125950 +static void L_getit 4706,130277 +L_getit 4709,130318 +Lisp_functions 4725,130664 +Lua_functions 4785,131850 +PS_functions 4811,132385 +Forth_words 4841,133053 +Scheme_functions 4877,134092 +static linebuffer *TEX_toktab TEX_toktab4908,134781 +static const char *TEX_defenv TEX_defenv4912,134974 +static void TEX_mode 4917,135172 +static void TEX_decode_env 4918,135203 +static char TEX_esc 4920,135261 +static char TEX_opgrp 4921,135289 +static char TEX_clgrp 4922,135318 +TeX_commands 4928,135395 +#define TEX_LESC 4986,136652 +#define TEX_SESC 4987,136674 +TEX_mode 4992,136804 +TEX_decode_env 5026,137509 +Texinfo_nodes 5071,138554 +HTML_labels 5094,139013 +static size_t prolog_pr 5214,142192 +static void prolog_skip_comment 5215,142234 +static size_t prolog_atom 5216,142290 +Prolog_functions 5219,142347 +prolog_skip_comment 5255,143128 +prolog_pr 5281,143736 +prolog_atom 5319,144628 +static int erlang_func 5374,145540 +static void erlang_attribute 5375,145581 +static int erlang_atom 5376,145620 +Erlang_functions 5379,145666 +erlang_func 5438,146965 +erlang_attribute 5476,147642 +erlang_atom 5496,148061 +static char *scan_separators scan_separators5520,148487 +static void add_regex 5521,148526 +static char *substitute substitute5522,148570 +scan_separators 5534,149080 +analyze_regex 5586,150460 +add_regex 5654,152050 +substitute 5767,154797 +free_regexps 5814,155837 +regex_tag_multiline 5836,156291 +nocase_tail 5913,158263 +get_tag 5928,158519 +readline_internal 5959,159455 +readline 6037,161296 +savestr 6230,167243 +savenstr 6240,167473 +skip_spaces 6249,167679 +skip_non_spaces 6258,167833 +skip_name 6267,167983 +fatal 6277,168156 +pfatal 6284,168253 +suggest_asking_for_help 6291,168332 +error 6300,168554 +concat 6313,168846 +etags_getcwd 6329,169259 +relative_filename 6350,169725 +absolute_filename 6389,170751 +absolute_dirname 6453,172416 +filename_is_absolute 6472,172845 +canonicalize_filename 6484,173096 +# define ISUPPER(6491,173235 +linebuffer_init 6514,173656 +linebuffer_setlen 6524,173887 +xmalloc 6536,174148 +xrealloc 6545,174314 + +c-src/exit.c,99 + size_t n;28,967 + void EXFUN((*fn[fn29,981 + } __libc_atexit;30,1017 +DEFUN(exit,38,1258 + +c-src/exit.strange_suffix,99 + size_t n;28,967 + void EXFUN((*fn[fn29,981 + } __libc_atexit;30,1017 +DEFUN(exit,38,1258 + +c-src/sysdep.h,491 +#define ENTRY(21,870 +#define PSEUDO(26,977 + movl $SYS_##syscall_nam$SYS_##syscall_na31,1137 + movl $SYS_##syscall_name, %eax;eax31,1137 + int $0x80;32,1185 + test %eax,eax33,1215 + test %eax, %eax;eax33,1215 + jl syscall_error;34,1250 +#define XCHG_0 47,1567 +#define XCHG_1 48,1611 +#define XCHG_2 49,1653 +#define XCHG_3 50,1696 +#define XCHG_4 51,1739 +#define XCHG_5 52,1782 +#define r0 54,1826 +#define r1 55,1880 +#define scratch 56,1937 +#define MOVE(57,2006 + +c-src/tab.c,196 +static int count_words(15,263 +static char *get_word(get_word35,553 +void tab_free(59,966 +char **tab_fill(tab_fill70,1129 +int tab_delete_first(91,1638 +int tab_count_words(103,1820 + +c-src/dostorture.c,198 +(*tag1 tag118,468 +#define notag2 26,577 +(*tag2 tag229,657 +(*tag3 tag339,809 +#define notag4 45,904 +(*tag4 tag448,1001 +tag5 57,1136 +tag6 66,1272 +int pp1(74,1389 +pp287,1504 +pp3(100,1616 + +c-src/emacs/src/gmalloc.c,7311 +#define USE_PTHREAD25,1002 +#undef get_current_dir_name33,1126 +extern void emacs_abort 47,1305 +#undef malloc64,2110 +#undef realloc65,2124 +#undef calloc66,2139 +#undef free67,2153 +#define malloc 68,2165 +#define realloc 69,2188 +#define calloc 70,2213 +#define aligned_alloc 71,2236 +#define free 72,2273 +extern void *bss_sbrk bss_sbrk76,2335 +extern int bss_sbrk_did_unexec;77,2375 +extern char bss_sbrk_buffer[bss_sbrk_buffer78,2407 +extern void *bss_sbrk_buffer_end;bss_sbrk_buffer_end79,2438 +#define DUMPED 80,2472 +#define ALLOCATED_BEFORE_DUMPING(81,2507 +extern void *malloc malloc94,2718 +#define INT_BIT 124,3934 +#define BLOCKLOG 125,3977 +#define BLOCKSIZE 126,4018 +#define BLOCKIFY(127,4052 +#define HEAP 131,4215 +#define FINAL_FREE_BLOCKS 135,4391 + int type;145,4676 + size_t nfree;150,4720 + size_t first;151,4777 + } frag;152,4834 + ptrdiff_t size;156,5055 + } info;157,5076 + } busy;158,5087 + size_t size;163,5215 + size_t next;164,5272 + size_t prev;165,5321 + } free;166,5374 + } malloc_info;167,5388 +extern char *_heapbase;_heapbase170,5449 +extern malloc_info *_heapinfo;_heapinfo173,5541 +#define BLOCK(176,5620 +#define ADDRESS(177,5682 +extern size_t _heapindex;180,5797 +extern size_t _heaplimit;183,5866 +struct list186,5939 + struct list *next;next188,5955 + struct list *prev;prev189,5978 +extern struct list _fraghead[_fraghead193,6056 +struct alignlist196,6153 + struct alignlist *next;next198,6174 + void *aligned;aligned199,6202 + void *exact;exact200,6270 +extern struct alignlist *_aligned_blocks;_aligned_blocks202,6334 +extern size_t _chunks_used;205,6401 +extern size_t _bytes_used;206,6429 +extern size_t _chunks_free;207,6456 +extern size_t _bytes_free;208,6484 +extern void *_malloc_internal _malloc_internal213,6673 +extern void *_realloc_internal _realloc_internal214,6713 +extern void _free_internal 215,6762 +extern void *_malloc_internal_nolock _malloc_internal_nolock216,6799 +extern void *_realloc_internal_nolock _realloc_internal_nolock217,6846 +extern void _free_internal_nolock 218,6902 +extern pthread_mutex_t _malloc_mutex,221,6966 +extern pthread_mutex_t _malloc_mutex, _aligned_blocks_mutex;221,6966 +extern int _malloc_thread_enabled_p;222,7027 +#define LOCK(223,7064 +#define UNLOCK(228,7195 +#define LOCK_ALIGNED_BLOCKS(233,7329 +#define UNLOCK_ALIGNED_BLOCKS(238,7484 +#define LOCK(244,7649 +#define UNLOCK(245,7664 +#define LOCK_ALIGNED_BLOCKS(246,7681 +#define UNLOCK_ALIGNED_BLOCKS(247,7711 +extern void *malloc_find_object_address malloc_find_object_address252,7865 +extern void *(*__morecore)__morecore256,8021 +extern void *__default_morecore __default_morecore259,8105 +extern void (*__after_morecore_hook)__after_morecore_hook263,8269 +extern size_t __malloc_extra_blocks;267,8442 +extern int __malloc_initialized;270,8552 +extern int __malloc_initialize 272,8646 +extern void (*__malloc_initialize_hook)__malloc_initialize_hook275,8723 +extern void (*__free_hook)__free_hook276,8771 +extern void *(*__malloc_hook)__malloc_hook277,8811 +extern void *(*__realloc_hook)__realloc_hook278,8856 +extern void *(*__memalign_hook)__memalign_hook279,8913 +enum mcheck_status283,9092 + MCHECK_DISABLED 285,9115 + MCHECK_OK,286,9187 + MCHECK_FREE,287,9226 + MCHECK_HEAD,288,9270 + MCHECK_TAIL 289,9334 +extern int mcheck 296,9701 +extern enum mcheck_status mprobe 301,9952 +extern void mtrace 304,10055 +extern void muntrace 305,10082 +struct mstats308,10153 + size_t bytes_total;310,10171 + size_t chunks_used;311,10225 + size_t bytes_used;312,10285 + size_t chunks_free;313,10351 + size_t bytes_free;314,10406 +extern struct mstats mstats 318,10518 +extern void memory_warnings 321,10625 +void *(*__malloc_hook)__malloc_hook352,11743 +char *_heapbase;_heapbase355,11829 +malloc_info *_heapinfo;_heapinfo358,11927 +static size_t heapsize;361,11983 +size_t _heapindex;364,12047 +size_t _heaplimit;367,12109 +struct list _fraghead[_fraghead370,12171 +size_t _chunks_used;373,12229 +size_t _bytes_used;374,12250 +size_t _chunks_free;375,12270 +size_t _bytes_free;376,12291 +int __malloc_initialized;379,12340 +size_t __malloc_extra_blocks;381,12367 +void (*__malloc_initialize_hook)__malloc_initialize_hook383,12398 +void (*__after_morecore_hook)__after_morecore_hook384,12439 +static int state_protected_p;400,12912 +static size_t last_state_size;401,12942 +static malloc_info *last_heapinfo;last_heapinfo402,12973 +protect_malloc_state 405,13014 +#define PROTECT_MALLOC_STATE(426,13627 +#define PROTECT_MALLOC_STATE(429,13697 +align 435,13794 +get_contiguous_space 466,14616 +register_heapinfo 497,15325 +pthread_mutex_t _malloc_mutex 517,15879 +pthread_mutex_t _aligned_blocks_mutex 518,15938 +int _malloc_thread_enabled_p;519,16005 +malloc_atfork_handler_prepare 522,16048 +malloc_atfork_handler_parent 529,16139 +malloc_atfork_handler_child 536,16233 +malloc_enable_thread 544,16375 +malloc_initialize_1 563,16961 +__malloc_initialize 594,17793 +static int morecore_recursing;604,17926 +morecore_nolock 609,18066 +_malloc_internal_nolock 722,21584 +_malloc_internal 920,28102 +malloc 932,28247 +extern void *_malloc _malloc956,29033 +extern void _free 957,29064 +extern void *_realloc _realloc958,29092 +_malloc 961,29140 +_free 967,29196 +_realloc 973,29240 +void (*__free_hook)__free_hook1001,30259 +struct alignlist *_aligned_blocks _aligned_blocks1004,30345 +_free_internal_nolock 1009,30474 +_free_internal 1255,38476 +free 1265,38603 +weak_alias 1277,38799 +#define min(1306,39813 +void *(*__realloc_hook)__realloc_hook1310,39898 +_realloc_internal_nolock 1319,40309 +_realloc_internal 1435,43563 +realloc 1447,43726 +calloc 1478,44894 +#define __sbrk 1513,46042 +extern void *__sbrk __sbrk1518,46247 +__default_morecore 1525,46511 +void *(*__memalign_hook)__memalign_hook1554,47456 +aligned_alloc 1557,47522 +memalign 1647,49704 +posix_memalign 1656,49909 +extern void *valloc valloc1695,51140 +extern int getpagesize 1700,51278 +static size_t pagesize;1703,51317 +valloc 1706,51349 +#undef malloc1715,51490 +#undef realloc1716,51504 +#undef calloc1717,51519 +#undef aligned_alloc1718,51533 +#undef free1719,51554 +extern void *malloc malloc1722,51609 +extern void *realloc realloc1723,51644 +extern void *calloc calloc1724,51691 +extern void free 1725,51740 +extern void *aligned_alloc aligned_alloc1727,51796 +extern int posix_memalign 1729,51890 +hybrid_malloc 1736,52083 +hybrid_calloc 1744,52188 +hybrid_free 1752,52319 +hybrid_aligned_alloc 1765,52626 +hybrid_realloc 1780,52984 +char *gget_current_dir_name gget_current_dir_name1808,53753 +hybrid_get_current_dir_name 1811,53797 +static void (*old_free_hook)old_free_hook1846,54921 +static void *(*old_malloc_hook)old_malloc_hook1847,54963 +static void *(*old_realloc_hook)old_realloc_hook1848,55010 +static void (*abortfunc)abortfunc1851,55124 +#define MAGICWORD 1854,55206 +#define MAGICFREE 1855,55261 +#define MAGICBYTE 1856,55316 +#define MALLOCFLOOD 1857,55348 +#define FREEFLOOD 1858,55382 +struct hdr1860,55415 + size_t size;1862,55430 + size_t magic;1863,55484 +checkhdr 1867,55581 +freehook 1891,56022 +mallochook 1927,56804 +reallochook 1944,57143 +mabort 1978,57901 +static int mcheck_used 2012,58586 +mcheck 2015,58619 +mprobe 2035,59138 + +c-src/emacs/src/regex.h,5300 +#define _REGEX_H 21,836 +typedef unsigned long reg_syntax_t;43,1577 +#define RE_BACKSLASH_ESCAPE_IN_LISTS 47,1749 +#define RE_BK_PLUS_QM 52,1969 +#define RE_CHAR_CLASSES 58,2298 +#define RE_CONTEXT_INDEP_ANCHORS 72,3032 +#define RE_CONTEXT_INDEP_OPS 80,3458 +#define RE_CONTEXT_INVALID_OPS 84,3658 +#define RE_DOT_NEWLINE 88,3801 +#define RE_DOT_NOT_NULL 92,3937 +#define RE_HAT_LISTS_NOT_NEWLINE 96,4082 +#define RE_INTERVALS 101,4292 +#define RE_LIMITED_OPS 105,4441 +#define RE_NEWLINE_ALT 109,4583 +#define RE_NO_BK_BRACES 114,4773 +#define RE_NO_BK_PARENS 118,4964 +#define RE_NO_BK_REFS 122,5120 +#define RE_NO_BK_VBAR 126,5316 +#define RE_NO_EMPTY_RANGES 132,5610 +#define RE_UNMATCHED_RIGHT_PAREN_ORD 136,5766 +#define RE_NO_POSIX_BACKTRACKING 140,5937 +#define RE_NO_GNU_OPS 144,6133 +#define RE_FRUGAL 147,6253 +#define RE_SHY_GROUPS 150,6360 +#define RE_NO_NEWLINE_ANCHOR 153,6468 +#define RE_DEBUG 161,6884 +extern reg_syntax_t re_syntax_options;167,7170 +extern Lisp_Object re_match_object;172,7344 +extern size_t re_max_failures;176,7454 +#define RE_SYNTAX_EMACS 183,7684 +#define RE_SYNTAX_AWK 186,7780 +#define RE_SYNTAX_GNU_AWK 193,8084 +#define RE_SYNTAX_POSIX_AWK 197,8255 +#define RE_SYNTAX_GREP 201,8393 +#define RE_SYNTAX_EGREP 206,8549 +#define RE_SYNTAX_POSIX_EGREP 212,8765 +#define RE_SYNTAX_ED 216,8910 +#define RE_SYNTAX_SED 218,8954 +#define _RE_SYNTAX_POSIX_COMMON 221,9072 +#define RE_SYNTAX_POSIX_BASIC 225,9215 +#define RE_SYNTAX_POSIX_MINIMAL_BASIC 231,9508 +#define RE_SYNTAX_POSIX_EXTENDED 234,9598 +#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED 242,9967 +# undef RE_DUP_MAX253,10454 +#define RE_DUP_MAX 256,10540 +#define REG_EXTENDED 263,10762 +#define REG_ICASE 267,10886 +#define REG_NEWLINE 272,11070 +#define REG_NOSUB 276,11248 +#define REG_NOTBOL 286,11614 +#define REG_NOTEOL 289,11688 + REG_ENOSYS 297,11859 + REG_NOERROR 300,11941 + REG_NOMATCH,301,11976 + REG_BADPAT,305,12123 + REG_ECOLLATE,306,12162 + REG_ECTYPE,307,12203 + REG_EESCAPE,308,12255 + REG_ESUBREG,309,12298 + REG_EBRACK,310,12345 + REG_EPAREN,311,12391 + REG_EBRACE,312,12436 + REG_BADBR,313,12472 + REG_ERANGE,314,12519 + REG_ESPACE,315,12560 + REG_BADRPT,316,12601 + REG_EEND,319,12693 + REG_ESIZE,320,12728 + REG_ERPAREN,321,12790 + REG_ERANGEX 322,12859 +} reg_errcode_t;323,12911 +# define RE_TRANSLATE_TYPE 332,13273 +struct re_pattern_buffer335,13315 + unsigned char *buffer;buffer341,13538 + size_t allocated;344,13614 + size_t used;347,13686 + reg_syntax_t syntax;350,13769 + char *fastmap;fastmap355,13975 + RE_TRANSLATE_TYPE translate;361,14241 + size_t re_nsub;364,14329 + unsigned can_be_null 370,14624 +#define REGS_UNALLOCATED 376,14889 +#define REGS_REALLOCATE 377,14916 +#define REGS_FIXED 378,14942 + unsigned regs_allocated 379,14963 + unsigned fastmap_accurate 383,15136 + unsigned no_sub 387,15267 + unsigned not_bol 391,15398 + unsigned not_eol 394,15475 + unsigned used_syntax 398,15655 + unsigned multibyte 403,15805 + unsigned target_multibyte 407,15941 + int charset_unibyte;410,16032 +typedef struct re_pattern_buffer regex_t;416,16098 +typedef ssize_t regoff_t;423,16492 +struct re_registers428,16652 + unsigned num_regs;430,16674 + regoff_t *start;start431,16695 + regoff_t *end;end432,16714 +# define RE_NREGS 440,16942 + regoff_t rm_so;449,17159 + regoff_t rm_eo;450,17239 +} regmatch_t;451,17317 +extern reg_syntax_t re_set_syntax 457,17512 +extern const char *re_compile_pattern re_compile_pattern462,17776 +extern int re_compile_fastmap 469,18058 +extern regoff_t re_search 477,18466 +extern regoff_t re_search_2 485,18781 +extern regoff_t re_match 495,19177 +extern regoff_t re_match_2 501,19407 +extern void re_set_registers 520,20197 +extern char *re_comp re_comp528,20469 +extern int re_exec 529,20506 +# define _Restrict_ 540,20886 +# define _Restrict_ 542,20979 +# define _Restrict_544,21018 +# define _Restrict_arr_ 555,21418 +# define _Restrict_arr_557,21461 +extern reg_errcode_t regcomp 562,21530 +extern reg_errcode_t regexec 566,21656 +extern size_t regerror 571,21850 +extern void regfree 574,21956 +# define CHAR_CLASS_MAX_LENGTH 593,22470 +# define CHAR_CLASS_MAX_LENGTH 597,22648 +typedef wctype_t re_wctype_t;599,22692 +typedef wchar_t re_wchar_t;600,22722 +# define re_wctype 601,22750 +# define re_iswctype 602,22776 +# define re_wctype_to_bit(603,22806 +# define CHAR_CLASS_MAX_LENGTH 605,22844 +# define btowc(606,22906 +typedef enum { RECC_ERROR 609,22953 + RECC_ALNUM,610,22984 + RECC_ALNUM, RECC_ALPHA,610,22984 + RECC_ALNUM, RECC_ALPHA, RECC_WORD,610,22984 + RECC_GRAPH,611,23027 + RECC_GRAPH, RECC_PRINT,611,23027 + RECC_LOWER,612,23059 + RECC_LOWER, RECC_UPPER,612,23059 + RECC_PUNCT,613,23091 + RECC_PUNCT, RECC_CNTRL,613,23091 + RECC_DIGIT,614,23123 + RECC_DIGIT, RECC_XDIGIT,614,23123 + RECC_BLANK,615,23156 + RECC_BLANK, RECC_SPACE,615,23156 + RECC_MULTIBYTE,616,23188 + RECC_MULTIBYTE, RECC_NONASCII,616,23188 + RECC_ASCII,617,23227 + RECC_ASCII, RECC_UNIBYTE617,23227 +} re_wctype_t;618,23260 +extern char re_iswctype 620,23276 +extern re_wctype_t re_wctype 621,23329 +typedef int re_wchar_t;623,23387 +extern void re_set_whitespace_regexp 625,23412 + +c-src/emacs/src/keyboard.c,23269 +volatile int interrupt_input_blocked;76,1808 +volatile bool pending_signals;80,1944 +#define KBD_BUFFER_SIZE 82,1976 +KBOARD *initial_kboard;initial_kboard84,2006 +KBOARD *current_kboard;current_kboard85,2030 +static KBOARD *all_kboards;all_kboards86,2054 +static bool single_kboard;89,2154 +#define NUM_RECENT_KEYS 91,2182 +static int recent_keys_index;94,2269 +static int total_keys;97,2357 +static Lisp_Object recent_keys;100,2443 +Lisp_Object this_command_keys;107,2777 +ptrdiff_t this_command_key_count;108,2808 +static bool this_command_key_count_reset;112,2922 +static Lisp_Object raw_keybuf;116,3074 +static int raw_keybuf_count;117,3105 +#define GROW_RAW_KEYBUF 119,3135 +static ptrdiff_t this_single_command_key_start;125,3350 +static ptrdiff_t before_command_key_count;129,3498 +static ptrdiff_t before_command_echo_length;130,3541 +sigjmp_buf return_to_command_loop;135,3677 +static Lisp_Object recover_top_level_message;138,3791 +static Lisp_Object regular_top_level_message;143,3930 +static sys_jmp_buf getcjmp;147,4031 +bool waiting_for_input;150,4095 +static bool echoing;154,4186 +static struct kboard *ok_to_echo_at_next_pause;ok_to_echo_at_next_pause159,4328 +struct kboard *echo_kboard;echo_kboard166,4632 +Lisp_Object echo_message_buffer;171,4744 +bool immediate_quit;174,4837 +int quit_char;192,5623 +EMACS_INT command_loop_level;195,5680 +Lisp_Object unread_switch_frame;204,6108 +static ptrdiff_t last_non_minibuf_size;207,6216 +uintmax_t num_input_events;210,6334 +static EMACS_INT last_auto_save;214,6428 +static ptrdiff_t last_point_position;217,6523 +Lisp_Object internal_last_event_frame;228,7028 +static Lisp_Object read_key_sequence_cmd;232,7168 +static Lisp_Object read_key_sequence_remapped;233,7210 +static FILE *dribble;dribble236,7310 +bool input_pending;239,7368 +static bool input_was_pending;287,10022 +static struct input_event kbd_buffer[kbd_buffer291,10107 +static struct input_event *kbd_fetch_ptr;kbd_fetch_ptr297,10386 +static struct input_event * volatile kbd_store_ptr;302,10601 +static void recursive_edit_unwind 313,11088 +static Lisp_Object command_loop 314,11144 +static void echo_now 316,11185 +static ptrdiff_t echo_length 317,11214 +unsigned timers_run;320,11296 +struct timespec *input_available_clear_time;input_available_clear_time324,11408 +bool interrupt_input;328,11573 +bool interrupts_deferred;331,11671 +static struct timespec timer_idleness_start_time;335,11746 +static struct timespec timer_last_idleness_start_time;340,11916 +#define READABLE_EVENTS_DO_TIMERS_NOW 346,12046 +#define READABLE_EVENTS_FILTER_EVENTS 347,12094 +#define READABLE_EVENTS_IGNORE_SQUEEZABLES 348,12142 +static void (*keyboard_init_hook)keyboard_init_hook351,12264 +static bool get_input_pending 353,12307 +static bool readable_events 354,12344 +static Lisp_Object read_char_x_menu_prompt 355,12379 +static Lisp_Object read_char_minibuf_menu_prompt 357,12502 +static Lisp_Object make_lispy_event 358,12571 +static Lisp_Object make_lispy_movement 359,12631 +static Lisp_Object modify_event_symbol 363,12840 +static Lisp_Object make_lispy_switch_frame 366,13050 +static Lisp_Object make_lispy_focus_in 367,13108 +static Lisp_Object make_lispy_focus_out 369,13188 +static bool help_char_p 371,13275 +static void save_getcjmp 372,13314 +static void restore_getcjmp 373,13354 +static Lisp_Object apply_modifiers 374,13397 +static void clear_event 375,13452 +static void restore_kboard_configuration 376,13500 +static void deliver_input_available_signal 378,13568 +static void handle_interrupt 380,13631 +static _Noreturn void quit_throw_to_read_char 381,13668 +static void process_special_events 382,13722 +static void timer_start_idle 383,13765 +static void timer_stop_idle 384,13802 +static void timer_resume_idle 385,13838 +static void deliver_user_signal 386,13876 +static char *find_user_signal_name find_user_signal_name387,13915 +static void store_user_signal_events 388,13957 +kset_echo_string 392,14088 +kset_kbd_queue 397,14184 +kset_keyboard_translate_table 402,14276 +kset_last_prefix_arg 407,14399 +kset_last_repeatable_command 412,14504 +kset_local_function_key_map 417,14625 +kset_overriding_terminal_local_map 422,14744 +kset_real_last_command 427,14877 +kset_system_key_syms 432,14986 +echo_add_key 443,15249 +echo_char 527,17527 +echo_dash 541,17813 +echo_now 586,19140 +cancel_echoing 635,20614 +echo_length 648,20922 +echo_truncate 660,21253 +add_command_key 672,21582 +recursive_edit_1 697,22406 +record_auto_save 742,23848 +force_auto_save_soon 751,24016 +DEFUN ("recursive-edit", Frecursive_edit,recursive-edit759,24137 +recursive_edit_unwind 804,25747 +any_kboard_state 817,26013 +single_kboard_state 838,26665 +not_single_kboard_state 848,26803 +struct kboard_stack858,27065 + KBOARD *kboard;kboard860,27087 + struct kboard_stack *next;next861,27105 +static struct kboard_stack *kboard_stack;kboard_stack864,27138 +push_kboard 867,27186 +pop_kboard 879,27375 +temporarily_switch_to_single_kboard 914,28263 +record_single_kboard_state 943,29437 +restore_kboard_configuration 952,29621 +cmd_error 970,30077 +cmd_error_internal 1024,31510 +DEFUN ("command-error-default-function", Fcommand_error_default_function,command-error-default-function1043,32030 +static Lisp_Object command_loop_2 1086,33637 +static Lisp_Object top_level_1 1087,33686 +command_loop 1094,33916 +command_loop_2 1134,35135 +top_level_2 1146,35339 +top_level_1 1152,35417 +DEFUN ("top-level", Ftop_level,top-level1164,35787 +user_error 1183,36288 +DEFUN ("exit-recursive-edit", Fexit_recursive_edit,exit-recursive-edit1189,36429 +DEFUN ("abort-recursive-edit", Fabort_recursive_edit,abort-recursive-edit1201,36819 +tracking_off 1216,37281 +DEFUN ("internal--track-mouse", Ftrack_mouse,track-mouse1234,37816 +bool ignore_mouse_drag_p;1256,38392 +some_mouse_moved 1259,38441 +static int read_key_sequence 1282,38799 +static void adjust_point_for_property 1284,38917 +Lisp_Object last_undo_boundary;1287,39032 +command_loop_1 1294,39273 +read_menu_command 1649,50889 +adjust_point_for_property 1678,51617 +safe_run_hooks_1 1831,57339 +safe_run_hooks_error 1841,57569 +safe_run_hook_funcall 1878,58576 +safe_run_hooks 1893,59058 +int poll_suppress_count;1908,59397 +static struct atimer *poll_timer;poll_timer1915,59487 +poll_for_input_1 1919,59589 +poll_for_input 1930,59789 +start_polling 1942,60053 +input_polling_used 1979,61091 +stop_polling 1994,61390 +set_poll_suppress_count 2009,61759 +bind_polling_period 2029,62141 +make_ctrl_char 2048,62492 +show_help_echo 2113,64455 +static Lisp_Object kbd_buffer_get_event 2152,65484 +static void record_char 2154,65596 +static Lisp_Object help_form_saved_window_configs;2156,65638 +read_char_help_form_unwind 2158,65701 +#define STOP_POLLING 2166,65959 +#define RESUME_POLLING 2170,66084 +read_event_from_main_queue 2175,66229 +read_decoded_event_from_main_queue 2249,68417 +#define MAX_ENCODED_BYTES 2254,68664 +echo_keystrokes_p 2342,71556 +read_char 2376,72848 +record_menu_key 3225,98949 +help_char_p 3258,99674 +record_char 3273,99953 +save_getcjmp 3412,104235 +restore_getcjmp 3418,104326 +readable_events 3430,104697 +int stop_character EXTERNALLY_VISIBLE;3497,106437 +event_to_kboard 3500,106493 +kbd_buffer_nr_stored 3522,107142 +kbd_buffer_store_event 3534,107483 +kbd_buffer_store_event_hold 3550,108025 +kbd_buffer_unget_event 3684,111617 +#define INPUT_EVENT_POS_MAX 3698,112018 +#define INPUT_EVENT_POS_MIN 3701,112147 +position_to_Time 3706,112287 +Time_to_position 3716,112514 +gen_help_event 3738,113171 +kbd_buffer_store_help_event 3756,113611 +discard_mouse_events 3773,113976 +kbd_buffer_events_waiting 3803,114711 +clear_event 3823,115068 +kbd_buffer_get_event 3836,115408 +process_special_events 4258,127881 +swallow_events 4322,129705 +timer_start_idle 4339,130098 +timer_stop_idle 4355,130576 +timer_resume_idle 4363,130720 +struct input_event last_timer_event EXTERNALLY_VISIBLE;4372,130912 +Lisp_Object pending_funcalls;4377,131172 +decode_timer 4381,131293 +timer_check_2 4414,132246 +timer_check 4572,136817 +DEFUN ("current-idle-time", Fcurrent_idle_time,current-idle-time4607,137662 +static Lisp_Object accent_key_syms;4625,138239 +static Lisp_Object func_key_syms;4626,138275 +static Lisp_Object mouse_syms;4627,138309 +static Lisp_Object wheel_syms;4628,138340 +static Lisp_Object drag_n_drop_syms;4629,138371 +static const int lispy_accent_codes[lispy_accent_codes4634,138516 +static const char *const lispy_accent_keys[lispy_accent_keys4741,139878 +#define FUNCTION_KEY_OFFSET 4766,140314 +const char *const lispy_function_keys[lispy_function_keys4768,140347 +static const char *const lispy_multimedia_keys[lispy_multimedia_keys4962,148901 +static const char *const lispy_kana_keys[lispy_kana_keys5026,150135 +#define FUNCTION_KEY_OFFSET 5061,151751 +static const char *const lispy_function_keys[lispy_function_keys5065,151894 +#define ISO_FUNCTION_KEY_OFFSET 5149,154429 +static const char *const iso_lispy_function_keys[iso_lispy_function_keys5151,154469 +static Lisp_Object Vlispy_mouse_stem;5172,155328 +static const char *const lispy_wheel_names[lispy_wheel_names5174,155367 +static const char *const lispy_drag_n_drop_names[lispy_drag_n_drop_names5181,155619 +static short const scroll_bar_parts[scroll_bar_parts5189,155885 +static Lisp_Object button_down_location;5210,156910 +static int last_mouse_button;5215,157065 +static int last_mouse_x;5216,157095 +static int last_mouse_y;5217,157120 +static Time button_down_time;5218,157145 +static int double_click_count;5222,157229 +make_lispy_position 5228,157390 +toolkit_menubar_in_use 5456,163953 +make_scroll_bar_position 5469,164321 +make_lispy_event 5485,164967 +make_lispy_movement 6104,183531 +make_lispy_switch_frame 6131,184262 +make_lispy_focus_in 6137,184369 +make_lispy_focus_out 6145,184495 +parse_modifiers_uncached 6163,184945 +#define SINGLE_LETTER_MOD(6185,185465 +#undef SINGLE_LETTER_MOD6212,185906 +#define MULTI_LETTER_MOD(6214,185932 +#undef MULTI_LETTER_MOD6231,186400 +apply_modifiers_uncached 6273,187574 +static const char *const modifier_names[modifier_names6319,189193 +#define NUM_MOD_NAMES 6325,189399 +static Lisp_Object modifier_symbols;6327,189449 +lispy_modifier_list 6331,189586 +#define KEY_TO_CHAR(6353,190252 +parse_modifiers 6356,190328 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517 +apply_modifiers 6422,192391 +reorder_modifiers 6491,194720 +modify_event_symbol 6536,196528 +DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199244 +parse_solitary_modifier 6695,201135 +#define SINGLE_LETTER_MOD(6701,201258 +#define MULTI_LETTER_MOD(6705,201343 +#undef SINGLE_LETTER_MOD6763,202641 +#undef MULTI_LETTER_MOD6764,202666 +lucid_event_type_list_p 6775,202889 +get_input_pending 6814,203960 +record_asynch_buffer_change 6834,204579 +gobble_input 6872,205702 +tty_read_avail_input 6967,208310 +handle_async_input 7149,214039 +process_pending_signals 7165,214359 +unblock_input_to 7177,214645 +unblock_input 7200,215277 +totally_unblock_input 7209,215445 +handle_input_available_signal 7217,215529 +deliver_input_available_signal 7226,215700 +struct user_signal_info7235,215865 + int sig;7238,215915 + char *name;name7241,215956 + int npending;7244,216007 + struct user_signal_info *next;next7246,216024 +static struct user_signal_info *user_signals user_signals7250,216090 +add_user_signal 7253,216149 +handle_user_signal 7275,216598 +deliver_user_signal 7316,217558 +find_user_signal_name 7322,217659 +store_user_signal_events 7334,217841 +static void menu_bar_item 7362,218341 +static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416 +static Lisp_Object menu_bar_items_vector;7368,218630 +static int menu_bar_items_index;7369,218672 +static const char *separator_names[separator_names7372,218707 +menu_separator_name_p 7393,219148 +menu_bar_items 7426,219852 +Lisp_Object item_properties;7568,224603 +menu_bar_item 7571,224645 +menu_item_eval_property_1 7647,227175 +eval_dyn 7658,227465 +menu_item_eval_property 7666,227675 +parse_menu_item 7686,228341 +static Lisp_Object tool_bar_items_vector;7965,236336 +static Lisp_Object tool_bar_item_properties;7970,236510 +static int ntool_bar_items;7974,236606 +static void init_tool_bar_items 7978,236664 +static void process_tool_bar_item 7979,236711 +static bool parse_tool_bar_item 7981,236801 +static void append_tool_bar_item 7982,236861 +tool_bar_items 7990,237083 +process_tool_bar_item 8075,239892 +#define PROP(8112,240969 +set_prop 8114,241038 +parse_tool_bar_item 8167,242453 +#undef PROP8379,248844 +init_tool_bar_items 8387,248969 +append_tool_bar_item 8401,249261 +read_char_x_menu_prompt 8443,250771 +read_char_minibuf_menu_prompt 8503,252445 +#define PUSH_C_STR(8527,253014 +follow_key 8726,258553 +active_maps 8733,258695 +typedef struct keyremap8742,259021 + Lisp_Object parent;8745,259107 + Lisp_Object map;8748,259224 + int start,8753,259446 + int start, end;8753,259446 +} keyremap;8754,259464 +access_keymap_keyremap 8764,259808 +keyremap_step 8811,261450 +test_undefined 8867,262934 +read_key_sequence 8916,264861 +read_key_sequence_vs 9826,295821 +DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299982 +detect_input_pending 9950,300488 +detect_input_pending_ignore_squeezables 9959,300654 +detect_input_pending_run_timers 9967,300870 +clear_input_pending 9985,301362 +requeued_events_pending_p 9997,301732 +DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813 +DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596 +DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303958 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304380 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305495 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306510 +DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069 +DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406 +DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447 +DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949 +stuff_buffered_input 10285,311045 +set_waiting_for_input 10323,312016 +clear_waiting_for_input 10337,312390 +handle_interrupt_signal 10351,312754 +deliver_interrupt_signal 10378,313642 +static int volatile force_quit_count;10387,313932 +handle_interrupt 10401,314414 +quit_throw_to_read_char 10541,318711 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288 +DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320516 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321432 +DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706 +DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570 +DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324459 +DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837 +DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060 +init_kboard 10861,328214 +allocate_kboard 10893,329284 +wipe_kboard 10909,329637 +delete_kboard 10917,329751 +init_keyboard 10942,330281 +struct event_head11021,332696 + short var;11023,332716 + short kind;11024,332729 +static const struct event_head head_table[head_table11027,332747 +syms_of_keyboard 11045,333577 + DEFVAR_LISP ("internal--top-level-message"11058,333972 + DEFVAR_LISP ("last-command-event"11312,342173 + DEFVAR_LISP ("last-nonmenu-event"11315,342297 + DEFVAR_LISP ("last-input-event"11321,342636 + DEFVAR_LISP ("unread-command-events"11324,342730 + DEFVAR_LISP ("unread-post-input-method-events"11332,343190 + DEFVAR_LISP ("unread-input-method-events"11338,343529 + DEFVAR_LISP ("meta-prefix-char"11346,343898 + DEFVAR_KBOARD ("last-command"11351,344106 + DEFVAR_KBOARD ("real-last-command"11368,344787 + DEFVAR_KBOARD ("last-repeatable-command"11372,344973 + DEFVAR_LISP ("this-command"11378,345261 + DEFVAR_LISP ("real-this-command"11384,345498 + DEFVAR_LISP ("this-command-keys-shift-translated"11388,345680 + DEFVAR_LISP ("this-original-command"11396,346123 + DEFVAR_INT ("auto-save-interval"11403,346520 + DEFVAR_LISP ("auto-save-timeout"11408,346734 + DEFVAR_LISP ("echo-keystrokes"11415,347079 + DEFVAR_INT ("polling-period"11421,347350 + DEFVAR_LISP ("double-click-time"11428,347693 + DEFVAR_INT ("double-click-fuzz"11435,348029 + DEFVAR_INT ("num-input-keys"11446,348519 + DEFVAR_INT ("num-nonmacro-input-events"11452,348794 + DEFVAR_LISP ("last-event-frame"11457,349032 + DEFVAR_LISP ("tty-erase-char"11463,349311 + DEFVAR_LISP ("help-char"11466,349434 + DEFVAR_LISP ("help-event-list"11472,349717 + DEFVAR_LISP ("help-form"11477,349928 + DEFVAR_LISP ("prefix-help-command"11483,350176 + DEFVAR_LISP ("top-level"11489,350454 + DEFVAR_KBOARD ("keyboard-translate-table"11495,350675 + DEFVAR_BOOL ("cannot-suspend"11511,351488 + DEFVAR_BOOL ("menu-prompting"11516,351715 + DEFVAR_LISP ("menu-prompt-more-char"11526,352145 + DEFVAR_INT ("extra-keyboard-modifiers"11531,352391 + DEFVAR_LISP ("deactivate-mark"11545,353117 + DEFVAR_LISP ("pre-command-hook"11553,353486 + DEFVAR_LISP ("post-command-hook"11560,353841 + DEFVAR_LISP ("echo-area-clear-hook"11568,354204 + DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354419 + DEFVAR_LISP ("menu-bar-final-items"11578,354622 + DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354872 + DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355230 + DEFVAR_LISP ("overriding-local-map"11598,355652 + DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356103 + DEFVAR_LISP ("special-event-map"11613,356442 + DEFVAR_LISP ("track-mouse"11617,356630 + DEFVAR_KBOARD ("system-key-alist"11620,356757 + DEFVAR_KBOARD ("local-function-key-map"11629,357138 + DEFVAR_KBOARD ("input-decode-map"11658,358597 + DEFVAR_LISP ("function-key-map"11675,359385 + DEFVAR_LISP ("key-translation-map"11683,359801 + DEFVAR_LISP ("deferred-action-list"11689,360145 + DEFVAR_LISP ("deferred-action-function"11694,360393 + DEFVAR_LISP ("delayed-warnings-list"11700,360692 + DEFVAR_LISP ("timer-list"11708,361100 + DEFVAR_LISP ("timer-idle-list"11712,361252 + DEFVAR_LISP ("input-method-function"11716,361415 + DEFVAR_LISP ("input-method-previous-message"11737,362384 + DEFVAR_LISP ("show-help-function"11744,362745 + DEFVAR_LISP ("disable-point-adjustment"11749,362977 + DEFVAR_LISP ("global-disable-point-adjustment"11761,363527 + DEFVAR_LISP ("minibuffer-message-timeout"11770,363893 + DEFVAR_LISP ("throw-on-input"11775,364171 + DEFVAR_LISP ("command-error-function"11781,364422 + DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364909 + DEFVAR_LISP ("select-active-regions"11798,365236 + DEFVAR_LISP ("saved-region-selection"11807,365628 + DEFVAR_LISP ("selection-inhibit-update-commands"11815,366013 + DEFVAR_LISP ("debug-on-event"11825,366554 +keys_of_keyboard 11841,367115 +mark_kboards 11916,370434 + DEFVAR_LISP ("internal--top-level-message",\111058,333972 + DEFVAR_LISP ("last-command-event",\111312,342173 + DEFVAR_LISP ("last-nonmenu-event",\111315,342297 + DEFVAR_LISP ("last-input-event",\111321,342636 + DEFVAR_LISP ("unread-command-events",\111324,342730 + DEFVAR_LISP ("unread-post-input-method-events",\111332,343190 + DEFVAR_LISP ("unread-input-method-events",\111338,343529 + DEFVAR_LISP ("meta-prefix-char",\111346,343898 + DEFVAR_KBOARD ("last-command",\111351,344106 + DEFVAR_KBOARD ("real-last-command",\111368,344787 + DEFVAR_KBOARD ("last-repeatable-command",\111372,344973 + DEFVAR_LISP ("this-command",\111378,345261 + DEFVAR_LISP ("real-this-command",\111384,345498 + DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345680 + DEFVAR_LISP ("this-original-command",\111396,346123 + DEFVAR_INT ("auto-save-interval",\111403,346520 + DEFVAR_LISP ("auto-save-timeout",\111408,346734 + DEFVAR_LISP ("echo-keystrokes",\111415,347079 + DEFVAR_INT ("polling-period",\111421,347350 + DEFVAR_LISP ("double-click-time",\111428,347693 + DEFVAR_INT ("double-click-fuzz",\111435,348029 + DEFVAR_INT ("num-input-keys",\111446,348519 + DEFVAR_INT ("num-nonmacro-input-events",\111452,348794 + DEFVAR_LISP ("last-event-frame",\111457,349032 + DEFVAR_LISP ("tty-erase-char",\111463,349311 + DEFVAR_LISP ("help-char",\111466,349434 + DEFVAR_LISP ("help-event-list",\111472,349717 + DEFVAR_LISP ("help-form",\111477,349928 + DEFVAR_LISP ("prefix-help-command",\111483,350176 + DEFVAR_LISP ("top-level",\111489,350454 + DEFVAR_KBOARD ("keyboard-translate-table",\111495,350675 + DEFVAR_BOOL ("cannot-suspend",\111511,351488 + DEFVAR_BOOL ("menu-prompting",\111516,351715 + DEFVAR_LISP ("menu-prompt-more-char",\111526,352145 + DEFVAR_INT ("extra-keyboard-modifiers",\111531,352391 + DEFVAR_LISP ("deactivate-mark",\111545,353117 + DEFVAR_LISP ("pre-command-hook",\111553,353486 + DEFVAR_LISP ("post-command-hook",\111560,353841 + DEFVAR_LISP ("echo-area-clear-hook",\111568,354204 + DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354419 + DEFVAR_LISP ("menu-bar-final-items",\111578,354622 + DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354872 + DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355230 + DEFVAR_LISP ("overriding-local-map",\111598,355652 + DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356103 + DEFVAR_LISP ("special-event-map",\111613,356442 + DEFVAR_LISP ("track-mouse",\111617,356630 + DEFVAR_KBOARD ("system-key-alist",\111620,356757 + DEFVAR_KBOARD ("local-function-key-map",\111629,357138 + DEFVAR_KBOARD ("input-decode-map",\111658,358597 + DEFVAR_LISP ("function-key-map",\111675,359385 + DEFVAR_LISP ("key-translation-map",\111683,359801 + DEFVAR_LISP ("deferred-action-list",\111689,360145 + DEFVAR_LISP ("deferred-action-function",\111694,360393 + DEFVAR_LISP ("delayed-warnings-list",\111700,360692 + DEFVAR_LISP ("timer-list",\111708,361100 + DEFVAR_LISP ("timer-idle-list",\111712,361252 + DEFVAR_LISP ("input-method-function",\111716,361415 + DEFVAR_LISP ("input-method-previous-message",\111737,362384 + DEFVAR_LISP ("show-help-function",\111744,362745 + DEFVAR_LISP ("disable-point-adjustment",\111749,362977 + DEFVAR_LISP ("global-disable-point-adjustment",\111761,363527 + DEFVAR_LISP ("minibuffer-message-timeout",\111770,363893 + DEFVAR_LISP ("throw-on-input",\111775,364171 + DEFVAR_LISP ("command-error-function",\111781,364422 + DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364909 + DEFVAR_LISP ("select-active-regions",\111798,365236 + DEFVAR_LISP ("saved-region-selection",\111807,365628 + DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366013 + DEFVAR_LISP ("debug-on-event",\111825,366554 + +c-src/emacs/src/lisp.h,39173 +#define EMACS_LISP_H22,800 +#define DECLARE_GDB_SYM(47,1421 +# define DEFINE_GDB_SYMBOL_BEGIN(49,1508 +# define DEFINE_GDB_SYMBOL_END(50,1578 +# define DEFINE_GDB_SYMBOL_BEGIN(52,1625 +# define DEFINE_GDB_SYMBOL_END(53,1702 +#undef min57,1790 +#undef max58,1801 +#define max(59,1812 +#define min(60,1854 +#define ARRAYELTS(63,1936 +#define GCTYPEBITS 67,2079 +DEFINE_GDB_SYMBOL_BEGIN GCTYPEBITS66,2037 +# define NONPOINTER_BITS 78,2567 +# define NONPOINTER_BITS 80,2600 +typedef int EMACS_INT;91,3023 +typedef unsigned int EMACS_UINT;92,3046 +# define EMACS_INT_MAX 93,3079 +# define pI 94,3111 +typedef long int EMACS_INT;96,3203 +typedef unsigned long EMACS_UINT;97,3231 +# define EMACS_INT_MAX 98,3265 +# define pI 99,3298 +typedef long long int EMACS_INT;103,3477 +typedef unsigned long long int EMACS_UINT;104,3510 +# define EMACS_INT_MAX 105,3553 +# define pI 106,3587 +enum { BOOL_VECTOR_BITS_PER_CHAR 114,3804 +#define BOOL_VECTOR_BITS_PER_CHAR 115,3840 +typedef size_t bits_word;123,4165 +# define BITS_WORD_MAX 124,4191 +enum { BITS_PER_BITS_WORD 125,4223 +typedef unsigned char bits_word;127,4290 +# define BITS_WORD_MAX 128,4323 +enum { BITS_PER_BITS_WORD 129,4386 +verify 131,4450 + BITS_PER_CHAR 136,4570 + BITS_PER_SHORT 137,4605 + BITS_PER_LONG 138,4657 + BITS_PER_EMACS_INT 139,4712 +typedef intmax_t printmax_t;148,5089 +typedef uintmax_t uprintmax_t;149,5118 +# define pMd 150,5149 +# define pMu 151,5170 +typedef EMACS_INT printmax_t;153,5197 +typedef EMACS_UINT uprintmax_t;154,5227 +# define pMd 155,5259 +# define pMu 156,5278 +# define pD 165,5664 +# define pD 167,5709 +# define pD 169,5756 +# define pD 171,5779 +# define eassert(200,7062 +# define eassume(201,7140 +extern _Noreturn void die 204,7206 +extern bool suppress_checking EXTERNALLY_VISIBLE;206,7268 +# define eassert(208,7319 +# define eassume(212,7450 +enum Lisp_Bits239,8519 +#define GCALIGNMENT 243,8647 + VALBITS 246,8742 + INTTYPEBITS 249,8838 + FIXNUM_BITS 252,8945 +#define VAL_MAX 263,9327 +#define USE_LSB_TAG 271,9777 +DEFINE_GDB_SYMBOL_BEGIN USE_LSB_TAG270,9733 +# define alignas(281,10077 +# define GCALIGNED 288,10227 +# define GCALIGNED 290,10292 +# define lisp_h_XLI(327,11642 +# define lisp_h_XIL(328,11673 +# define lisp_h_XLI(330,11724 +# define lisp_h_XIL(331,11751 +#define lisp_h_CHECK_LIST_CONS(333,11785 +#define lisp_h_CHECK_NUMBER(334,11856 +#define lisp_h_CHECK_SYMBOL(335,11927 +#define lisp_h_CHECK_TYPE(336,11996 +#define lisp_h_CONSP(338,12107 +#define lisp_h_EQ(339,12156 +#define lisp_h_FLOATP(340,12201 +#define lisp_h_INTEGERP(341,12252 +#define lisp_h_MARKERP(342,12333 +#define lisp_h_MISCP(343,12408 +#define lisp_h_NILP(344,12457 +#define lisp_h_SET_SYMBOL_VAL(345,12493 +#define lisp_h_SYMBOL_CONSTANT_P(347,12607 +#define lisp_h_SYMBOL_VAL(348,12671 +#define lisp_h_SYMBOLP(350,12772 +#define lisp_h_VECTORLIKEP(351,12825 +#define lisp_h_XCAR(352,12886 +#define lisp_h_XCDR(353,12924 +#define lisp_h_XCONS(354,12964 +#define lisp_h_XHASH(356,13059 +#define lisp_h_XPNTR(357,13093 +# define lisp_h_check_cons_list(360,13221 +# define lisp_h_make_number(363,13289 +# define lisp_h_XFASTINT(365,13392 +# define lisp_h_XINT(366,13429 +# define lisp_h_XSYMBOL(367,13478 +# define lisp_h_XTYPE(371,13631 +# define lisp_h_XUNTAG(372,13696 +# define XLI(381,14086 +# define XIL(382,14117 +# define CHECK_LIST_CONS(383,14148 +# define CHECK_NUMBER(384,14209 +# define CHECK_SYMBOL(385,14258 +# define CHECK_TYPE(386,14307 +# define CONSP(387,14382 +# define EQ(388,14417 +# define FLOATP(389,14452 +# define INTEGERP(390,14489 +# define MARKERP(391,14530 +# define MISCP(392,14569 +# define NILP(393,14604 +# define SET_SYMBOL_VAL(394,14637 +# define SYMBOL_CONSTANT_P(395,14700 +# define SYMBOL_VAL(396,14763 +# define SYMBOLP(397,14812 +# define VECTORLIKEP(398,14851 +# define XCAR(399,14898 +# define XCDR(400,14931 +# define XCONS(401,14964 +# define XHASH(402,14999 +# define XPNTR(403,15034 +# define check_cons_list(405,15097 +# define make_number(408,15176 +# define XFASTINT(409,15224 +# define XINT(410,15266 +# define XSYMBOL(411,15300 +# define XTYPE(412,15340 +# define XUNTAG(413,15376 +#define LISP_MACRO_DEFUN(421,15672 +#define LISP_MACRO_DEFUN_VOID(425,15845 +#define INTMASK 437,16289 +#define case_Lisp_Int 438,16342 +#define ENUM_BF(445,16681 +#define ENUM_BF(447,16722 +enum Lisp_Type451,16763 + Lisp_Symbol 454,16851 + Lisp_Misc 458,16993 + Lisp_Int0 461,17067 + Lisp_Int1 462,17086 + Lisp_String 466,17264 + Lisp_Vectorlike 472,17543 + Lisp_Cons 475,17632 + Lisp_Float 477,17670 +enum Lisp_Misc_Type485,18016 + Lisp_Misc_Free 487,18040 + Lisp_Misc_Marker,488,18069 + Lisp_Misc_Overlay,489,18091 + Lisp_Misc_Save_Value,490,18114 + Lisp_Misc_Finalizer,491,18140 + Lisp_Misc_Float,494,18275 + Lisp_Misc_Limit496,18359 +enum Lisp_Fwd_Type502,18543 + Lisp_Fwd_Int,504,18566 + Lisp_Fwd_Bool,505,18619 + Lisp_Fwd_Obj,506,18670 + Lisp_Fwd_Buffer_Obj,507,18729 + Lisp_Fwd_Kboard_Obj 508,18800 +typedef struct { EMACS_INT i;567,21781 +typedef struct { EMACS_INT i; } Lisp_Object;567,21781 +#define LISP_INITIALLY(569,21827 +#undef CHECK_LISP_OBJECT_TYPE571,21858 +enum CHECK_LISP_OBJECT_TYPE 572,21888 +enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 572,21888 +typedef EMACS_INT Lisp_Object;577,22064 +#define LISP_INITIALLY(578,22095 +enum CHECK_LISP_OBJECT_TYPE 579,22125 +enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 579,22125 +#define LISP_INITIALLY_ZERO 582,22226 +INLINE bool BOOL_VECTOR_P 588,22350 +INLINE bool BUFFER_OBJFWDP 589,22391 +INLINE bool BUFFERP 590,22438 +INLINE bool CHAR_TABLE_P 591,22473 +INLINE Lisp_Object CHAR_TABLE_REF_ASCII 592,22513 +INLINE bool 593,22579 +INLINE bool 594,22614 +INLINE bool functionp 595,22650 +INLINE bool 596,22687 +INLINE bool 597,22725 +INLINE bool 598,22762 +INLINE bool 599,22797 +INLINE bool OVERLAYP 600,22831 +INLINE bool PROCESSP 601,22867 +INLINE bool PSEUDOVECTORP 602,22903 +INLINE bool SAVE_VALUEP 603,22949 +INLINE bool FINALIZERP 604,22988 +INLINE void set_sub_char_table_contents 605,23026 +INLINE bool STRINGP 607,23116 +INLINE bool SUB_CHAR_TABLE_P 608,23151 +INLINE bool SUBRP 609,23195 +INLINE bool 610,23228 +INLINE bool 611,23265 +INLINE bool WINDOWP 612,23306 +INLINE bool TERMINALP 613,23341 +INLINE struct Lisp_Save_Value *XSAVE_VALUE XSAVE_VALUE614,23378 +INLINE struct Lisp_Finalizer *XFINALIZER XFINALIZER615,23436 +INLINE struct Lisp_Symbol *(XSYMBOL)616,23492 +INLINE void 617,23544 +extern Lisp_Object char_table_ref 620,23616 +extern void char_table_set 621,23670 +extern _Noreturn Lisp_Object wrong_type_argument 624,23757 +extern _Noreturn void wrong_choice 625,23834 +extern bool might_dump;628,23925 +extern bool initialized;631,24061 +extern double extract_float 634,24117 +enum symbol_interned639,24199 + SYMBOL_UNINTERNED 641,24222 + SYMBOL_INTERNED 642,24247 + SYMBOL_INTERNED_IN_INITIAL_OBARRAY 643,24270 +enum symbol_redirect646,24315 + SYMBOL_PLAINVAL 648,24338 + SYMBOL_VARALIAS 649,24362 + SYMBOL_LOCALIZED 650,24386 + SYMBOL_FORWARDED 651,24410 +struct Lisp_Symbol654,24437 + bool_bf gcmarkbit 656,24458 + ENUM_BF 663,24793 + Lisp_Object value;687,25631 + struct Lisp_Symbol *alias;alias688,25654 + struct Lisp_Buffer_Local_Value *blv;blv689,25685 + union Lisp_Fwd *fwd;fwd690,25726 + } val;691,25751 + Lisp_Object function;694,25823 + Lisp_Object plist;697,25885 + struct Lisp_Symbol *next;next700,25974 +#define EXFUN(707,26252 +#define DEFUN_ARGS_MANY 712,26446 +#define DEFUN_ARGS_UNEVALLED 713,26498 +#define DEFUN_ARGS_0 714,26541 +#define DEFUN_ARGS_1 715,26569 +#define DEFUN_ARGS_2 716,26604 +#define DEFUN_ARGS_3 717,26652 +#define DEFUN_ARGS_4 718,26713 +#define DEFUN_ARGS_5 719,26787 +#define DEFUN_ARGS_6 721,26880 +#define DEFUN_ARGS_7 723,26986 +#define DEFUN_ARGS_8 725,27105 +#define TAG_PTR(729,27296 +#define TAG_SYMOFFSET(734,27543 +#define XLI_BUILTIN_LISPSYM(741,27842 +#define DEFINE_LISP_SYMBOL(746,28101 +# define DEFINE_NON_NIL_Q_SYMBOL_MACROS 755,28572 +LISP_MACRO_DEFUN 762,28777 +# define ARRAY_MARK_FLAG 768,29024 +# define PSEUDOVECTOR_FLAG 774,29267 +enum pvec_type780,29568 + PVEC_NORMAL_VECTOR,782,29585 + PVEC_FREE,783,29607 + PVEC_PROCESS,784,29620 + PVEC_FRAME,785,29636 + PVEC_WINDOW,786,29650 + PVEC_BOOL_VECTOR,787,29665 + PVEC_BUFFER,788,29685 + PVEC_HASH_TABLE,789,29700 + PVEC_TERMINAL,790,29719 + PVEC_WINDOW_CONFIGURATION,791,29736 + PVEC_SUBR,792,29765 + PVEC_OTHER,793,29778 + PVEC_COMPILED,795,29856 + PVEC_CHAR_TABLE,796,29873 + PVEC_SUB_CHAR_TABLE,797,29892 + PVEC_FONT 798,29915 +enum More_Lisp_Bits801,29991 + PSEUDOVECTOR_SIZE_BITS 808,30382 + PSEUDOVECTOR_SIZE_MASK 809,30415 + PSEUDOVECTOR_REST_BITS 813,30625 + PSEUDOVECTOR_REST_MASK 814,30658 + PSEUDOVECTOR_AREA_BITS 818,30823 + PVEC_TYPE_MASK 819,30901 +# define VALMASK 829,31302 +DEFINE_GDB_SYMBOL_BEGIN VALMASK828,31257 +#define MOST_POSITIVE_FIXNUM 834,31532 +#define MOST_NEGATIVE_FIXNUM 835,31592 +XINT 874,32684 +XFASTINT 889,33035 +XSYMBOL 899,33263 +XTYPE 910,33481 +XUNTAG 918,33661 +LISP_MACRO_DEFUN 927,33857 +LISP_MACRO_DEFUN 940,34242 +#define FIXNUM_OVERFLOW_P(958,34855 +LISP_MACRO_DEFUN FIXNUM_OVERFLOW_P952,34632 +LISP_MACRO_DEFUN 970,35171 +XSTRING 980,35391 +#define SYMBOL_INDEX(988,35575 +XFLOAT 991,35636 +XPROCESS 1000,35778 +XWINDOW 1007,35895 +XTERMINAL 1014,36012 +XSUBR 1021,36134 +XBUFFER 1028,36245 +XCHAR_TABLE 1035,36369 +XSUB_CHAR_TABLE 1042,36506 +XBOOL_VECTOR 1049,36648 +make_lisp_ptr 1058,36827 +make_lisp_symbol 1066,37013 +builtin_lisp_symbol 1074,37197 +#define XSETINT(1079,37279 +#define XSETFASTINT(1080,37325 +#define XSETCONS(1081,37375 +#define XSETVECTOR(1082,37435 +#define XSETSTRING(1083,37503 +#define XSETSYMBOL(1084,37567 +#define XSETFLOAT(1085,37621 +#define XSETMISC(1086,37683 +#define XSETPVECTYPE(1090,37772 +#define XSETPVECTYPESIZE(1092,37888 +#define XSETPSEUDOVECTOR(1099,38185 +#define XSETTYPED_PSEUDOVECTOR(1105,38369 +#define XSETWINDOW_CONFIGURATION(1110,38579 +#define XSETPROCESS(1112,38675 +#define XSETWINDOW(1113,38741 +#define XSETTERMINAL(1114,38805 +#define XSETSUBR(1115,38873 +#define XSETCOMPILED(1116,38933 +#define XSETBUFFER(1117,39001 +#define XSETCHAR_TABLE(1118,39065 +#define XSETBOOL_VECTOR(1119,39137 +#define XSETSUB_CHAR_TABLE(1120,39211 +XINTPTR 1128,39581 +make_pointer_integer 1134,39661 +LISP_MACRO_DEFUN_VOID 1143,39826 +typedef struct interval *INTERVAL;INTERVAL1149,39987 + Lisp_Object cdr;1159,40162 + struct Lisp_Cons *chain;chain1162,40236 +xcar_addr 1174,40760 +xcdr_addr 1179,40837 +LISP_MACRO_DEFUN 1185,40931 +XSETCDR 1198,41307 +CAR 1205,41457 +CDR 1212,41591 +CAR_SAFE 1221,41791 +CDR_SAFE 1226,41877 +STRING_MULTIBYTE 1243,42250 +#define STRING_BYTES_BOUND 1261,43057 +#define STRING_SET_UNIBYTE(1265,43201 +#define STRING_SET_MULTIBYTE(1275,43516 +SDATA 1286,43830 +SSDATA 1291,43908 +SREF 1297,44037 +SSET 1302,44128 +SCHARS 1307,44242 +extern ptrdiff_t string_bytes 1313,44337 +STRING_BYTES 1316,44415 +SBYTES 1326,44595 +STRING_SET_CHARS 1331,44681 +struct vectorlike_header1343,45232 + ptrdiff_t size;1364,46383 +struct Lisp_Vector1369,46482 + struct vectorlike_header header;1371,46505 + Lisp_Object contents[contents1372,46542 + ALIGNOF_STRUCT_LISP_VECTOR1378,46681 +struct Lisp_Bool_Vector1384,46864 + struct vectorlike_header header;1388,47012 + EMACS_INT size;1390,47086 + bits_word data[data1395,47319 +bool_vector_size 1399,47385 +bool_vector_data 1407,47523 +bool_vector_uchar_data 1413,47617 +bool_vector_words 1421,47803 +bool_vector_bytes 1428,47998 +bool_vector_bitref 1437,48238 +bool_vector_ref 1445,48478 +bool_vector_set 1453,48618 + header_size 1471,49047 + bool_header_size 1472,49106 + word_size 1473,49171 +AREF 1479,49284 +aref_addr 1485,49391 +ASIZE 1491,49501 +ASET 1497,49583 +gc_aset 1504,49742 +enum { NIL_IS_ZERO 1515,50269 +memclear 1520,50464 +#define VECSIZE(1531,50762 +#define PSEUDOVECSIZE(1538,51047 +#define UNSIGNED_CMP(1546,51480 +#define ASCII_CHAR_P(1552,51734 +enum CHARTAB_SIZE_BITS1565,52489 + CHARTAB_SIZE_BITS_0 1567,52516 + CHARTAB_SIZE_BITS_1 1568,52545 + CHARTAB_SIZE_BITS_2 1569,52574 + CHARTAB_SIZE_BITS_3 1570,52603 +extern const int chartab_size[chartab_size1573,52637 +struct Lisp_Char_Table1575,52672 + struct vectorlike_header header;1581,52928 + Lisp_Object defalt;1585,53078 + Lisp_Object parent;1590,53280 + Lisp_Object purpose;1594,53398 + Lisp_Object ascii;1598,53564 + Lisp_Object contents[contents1600,53588 + Lisp_Object extras[extras1603,53699 +struct Lisp_Sub_Char_Table1606,53752 + struct vectorlike_header header;1610,53918 + int depth;1618,54341 + int min_char;1621,54417 + Lisp_Object contents[contents1624,54492 +CHAR_TABLE_REF_ASCII 1628,54566 +CHAR_TABLE_REF 1648,55113 +CHAR_TABLE_SET 1658,55402 +struct Lisp_Subr1670,55786 + struct vectorlike_header header;1672,55807 + Lisp_Object (*a0)a01674,55856 + Lisp_Object (*a1)a11675,55888 + Lisp_Object (*a2)a21676,55927 + Lisp_Object (*a3)a31677,55979 + Lisp_Object (*a4)a41678,56044 + Lisp_Object (*a5)a51679,56122 + Lisp_Object (*a6)a61680,56213 + Lisp_Object (*a7)a71681,56317 + Lisp_Object (*a8)a81682,56434 + Lisp_Object (*aUNEVALLED)aUNEVALLED1683,56564 + Lisp_Object (*aMANY)aMANY1684,56616 + } function;1685,56671 + short min_args,1686,56687 + short min_args, max_args;1686,56687 + const char *symbol_name;symbol_name1687,56717 + const char *intspec;intspec1688,56746 + const char *doc;doc1689,56771 +enum char_table_specials1692,56798 + CHAR_TABLE_STANDARD_SLOTS 1697,56993 + SUB_CHAR_TABLE_OFFSET 1701,57214 +CHAR_TABLE_EXTRA_SLOTS 1707,57377 +verify 1714,57596 +LISP_MACRO_DEFUN 1723,57921 +SYMBOL_BLV 1732,58181 +SYMBOL_FWD 1738,58316 +LISP_MACRO_DEFUN_VOID 1744,58428 +SET_SYMBOL_BLV 1754,58691 +SET_SYMBOL_FWD 1760,58850 +SYMBOL_NAME 1767,59001 +SYMBOL_INTERNED_P 1775,59130 +SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P 1783,59299 +#define DEFSYM(1796,59809 +LISP_MACRO_DEFUN DEFSYM1792,59630 +struct hash_table_test1805,60062 + Lisp_Object name;1808,60139 + Lisp_Object user_hash_function;1811,60206 + Lisp_Object user_cmp_function;1814,60297 + bool (*cmpfn)cmpfn1817,60372 + EMACS_UINT (*hashfn)hashfn1820,60486 +struct Lisp_Hash_Table1823,60555 + struct vectorlike_header header;1826,60649 + Lisp_Object weak;1830,60783 + Lisp_Object rehash_size;1835,61007 + Lisp_Object rehash_threshold;1839,61129 + Lisp_Object hash;1843,61260 + Lisp_Object next;1848,61490 + Lisp_Object next_free;1851,61560 + Lisp_Object index;1856,61771 + ptrdiff_t count;1863,62041 + Lisp_Object key_and_value;1868,62240 + struct hash_table_test test;1871,62314 + struct Lisp_Hash_Table *next_weak;next_weak1875,62457 +XHASH_TABLE 1880,62531 +#define XSET_HASH_TABLE(1885,62602 +HASH_TABLE_P 1889,62703 +HASH_KEY 1896,62860 +HASH_VALUE 1903,63040 +HASH_NEXT 1911,63254 +HASH_HASH 1918,63431 +HASH_INDEX 1926,63677 +HASH_TABLE_SIZE 1933,63826 +enum DEFAULT_HASH_SIZE 1940,63956 +enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE 1940,63956 +static double const DEFAULT_REHASH_THRESHOLD 1946,64176 +static double const DEFAULT_REHASH_SIZE 1950,64299 +sxhash_combine 1956,64465 +SXHASH_REDUCE 1964,64648 +struct Lisp_Misc_Any 1971,64806 + ENUM_BF 1973,64866 +struct Lisp_Marker1978,64980 + ENUM_BF 1980,65001 +struct Lisp_Overlay2021,66841 + ENUM_BF 2034,67349 + SAVE_UNUSED,2047,67644 + SAVE_INTEGER,2048,67661 + SAVE_FUNCPOINTER,2049,67679 + SAVE_POINTER,2050,67701 + SAVE_OBJECT2051,67719 +enum { SAVE_SLOT_BITS 2055,67804 +enum { SAVE_VALUE_SLOTS 2058,67901 +enum { SAVE_TYPE_BITS 2062,68009 +enum Lisp_Save_Type2064,68075 + SAVE_TYPE_INT_INT 2066,68099 + SAVE_TYPE_INT_INT_INT2067,68172 + SAVE_TYPE_OBJ_OBJ 2069,68262 + SAVE_TYPE_OBJ_OBJ_OBJ 2070,68333 + SAVE_TYPE_OBJ_OBJ_OBJ_OBJ2071,68414 + SAVE_TYPE_PTR_INT 2073,68509 + SAVE_TYPE_PTR_OBJ 2074,68582 + SAVE_TYPE_PTR_PTR 2075,68654 + SAVE_TYPE_FUNCPTR_PTR_OBJ2076,68727 + SAVE_TYPE_MEMORY 2080,68885 +typedef void (*voidfuncptr)voidfuncptr2108,69839 +struct Lisp_Save_Value2110,69876 + ENUM_BF 2112,69903 + void *pointer;pointer2125,70558 + voidfuncptr funcpointer;2126,70579 + ptrdiff_t integer;2127,70610 + Lisp_Object object;2128,70635 + } data[data2129,70661 +save_type 2134,70755 +XSAVE_POINTER 2143,70985 +set_save_pointer 2149,71147 +XSAVE_FUNCPOINTER 2155,71329 +XSAVE_INTEGER 2164,71549 +set_save_integer 2170,71711 +XSAVE_OBJECT 2179,71932 +struct Lisp_Finalizer2186,72109 + struct Lisp_Misc_Any base;2188,72135 + struct Lisp_Finalizer *prev;prev2191,72223 + struct Lisp_Finalizer *next;next2192,72256 + Lisp_Object function;2197,72493 +struct Lisp_Free2201,72584 + ENUM_BF 2203,72605 +union Lisp_Misc2212,72885 + struct Lisp_Misc_Any u_any;2214,72905 + struct Lisp_Free u_free;2215,72976 + struct Lisp_Marker u_marker;2216,73005 + struct Lisp_Overlay u_overlay;2217,73038 + struct Lisp_Save_Value u_save_value;2218,73073 + struct Lisp_Finalizer u_finalizer;2219,73114 +XMISC 2223,73184 +XMISCANY 2229,73273 +XMISCTYPE 2236,73382 +XMARKER 2242,73470 +XOVERLAY 2249,73585 +XSAVE_VALUE 2256,73706 +XFINALIZER 2263,73835 +struct Lisp_Intfwd2274,74120 + enum Lisp_Fwd_Type type;2276,74143 + EMACS_INT *intvar;intvar2277,74193 +struct Lisp_Boolfwd2284,74414 + enum Lisp_Fwd_Type type;2286,74438 + bool *boolvar;boolvar2287,74489 +struct Lisp_Objfwd2294,74705 + enum Lisp_Fwd_Type type;2296,74728 + Lisp_Object *objvar;objvar2297,74778 +struct Lisp_Buffer_Objfwd2302,74937 + enum Lisp_Fwd_Type type;2304,74967 + int offset;2305,75024 + Lisp_Object predicate;2307,75116 +struct Lisp_Buffer_Local_Value2334,76473 + bool_bf local_if_set 2338,76618 + bool_bf frame_local 2341,76800 + bool_bf found 2344,76942 + union Lisp_Fwd *fwd;fwd2346,77044 + Lisp_Object where;2348,77187 + Lisp_Object defcell;2351,77313 + Lisp_Object valcell;2357,77617 +struct Lisp_Kboard_Objfwd2362,77732 + enum Lisp_Fwd_Type type;2364,77762 + int offset;2365,77819 +union Lisp_Fwd2368,77841 + struct Lisp_Intfwd u_intfwd;2370,77860 + struct Lisp_Boolfwd u_boolfwd;2371,77893 + struct Lisp_Objfwd u_objfwd;2372,77928 + struct Lisp_Buffer_Objfwd u_buffer_objfwd;2373,77961 + struct Lisp_Kboard_Objfwd u_kboard_objfwd;2374,78008 +XFWDTYPE 2378,78087 +XBUFFER_OBJFWD 2384,78183 +struct Lisp_Float2391,78319 + double data;2395,78357 + struct Lisp_Float *chain;chain2396,78376 + } u;2397,78408 +XFLOAT_DATA 2401,78437 + IEEE_FLOATING_POINT2415,78946 +#define _UCHAR_T2423,79269 +typedef unsigned char UCHAR;2424,79286 +enum Lisp_Compiled2429,79369 + COMPILED_ARGLIST 2431,79392 + COMPILED_BYTECODE 2432,79418 + COMPILED_CONSTANTS 2433,79445 + COMPILED_STACK_DEPTH 2434,79473 + COMPILED_DOC_STRING 2435,79503 + COMPILED_INTERACTIVE 2436,79532 +enum char_bits2443,79834 + CHAR_ALT 2445,79853 + CHAR_SUPER 2446,79879 + CHAR_HYPER 2447,79907 + CHAR_SHIFT 2448,79935 + CHAR_CTL 2449,79963 + CHAR_META 2450,79989 + CHAR_MODIFIER_MASK 2452,80017 + CHARACTERBITS 2457,80212 +LISP_MACRO_DEFUN 2462,80270 +NATNUMP 2470,80412 +RANGED_INTEGERP 2476,80493 +#define TYPE_RANGED_INTEGERP(2481,80615 +LISP_MACRO_DEFUN 2486,80800 +VECTORP 2500,81273 +OVERLAYP 2505,81376 +SAVE_VALUEP 2510,81475 +FINALIZERP 2516,81581 +AUTOLOADP 2522,81685 +BUFFER_OBJFWDP 2528,81776 +PSEUDOVECTOR_TYPEP 2534,81874 +PSEUDOVECTORP 2542,82127 +WINDOW_CONFIGURATIONP 2558,82479 +PROCESSP 2564,82589 +WINDOWP 2570,82673 +TERMINALP 2576,82755 +SUBRP 2582,82841 +COMPILEDP 2588,82919 +BUFFERP 2594,83005 +CHAR_TABLE_P 2600,83087 +SUB_CHAR_TABLE_P 2606,83178 +BOOL_VECTOR_P 2612,83277 +FRAMEP 2618,83370 +IMAGEP 2625,83487 +ARRAYP 2632,83592 +CHECK_LIST 2638,83711 +LISP_MACRO_DEFUN_VOID 2643,83792 +CHECK_STRING_CAR 2653,84089 +CHECK_CONS 2658,84193 +CHECK_VECTOR 2663,84273 +CHECK_BOOL_VECTOR 2668,84359 +CHECK_VECTOR_OR_STRING 2674,84536 +CHECK_ARRAY 2683,84710 +CHECK_BUFFER 2688,84818 +CHECK_WINDOW 2693,84904 +CHECK_PROCESS 2699,85010 +CHECK_NATNUM 2705,85106 +#define CHECK_RANGED_INTEGER(2710,85183 +#define CHECK_TYPE_RANGED_INTEGER(2721,85566 +#define CHECK_NUMBER_COERCE_MARKER(2729,85836 +XFLOATINT 2738,86089 +CHECK_NUMBER_OR_FLOAT 2744,86160 +#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(2749,86259 +CHECK_NUMBER_CAR 2760,86669 +CHECK_NUMBER_CDR 2768,86791 +#define DEFUN(2803,88386 +#define DEFUN(2812,88854 +FUNCTIONP 2822,89209 +extern void defsubr 2829,89361 +enum maxargs2831,89404 + MANY 2833,89421 + UNEVALLED 2834,89436 +#define CALLMANY(2838,89539 +#define CALLN(2844,89892 +extern void defvar_lisp 2846,89962 +extern void defvar_lisp_nopro 2847,90039 +extern void defvar_bool 2848,90122 +extern void defvar_int 2849,90193 +extern void defvar_kboard 2850,90267 +#define DEFVAR_LISP(2869,91097 +#define DEFVAR_LISP_NOPRO(2874,91269 +#define DEFVAR_BOOL(2879,91451 +#define DEFVAR_INT(2884,91624 +#define DEFVAR_BUFFER_DEFAULTS(2890,91795 +#define DEFVAR_KBOARD(2896,91999 +typedef jmp_buf sys_jmp_buf;2906,92323 +# define sys_setjmp(2907,92352 +# define sys_longjmp(2908,92387 +typedef sigjmp_buf sys_jmp_buf;2910,92459 +# define sys_setjmp(2911,92491 +# define sys_longjmp(2912,92531 +typedef jmp_buf sys_jmp_buf;2916,92690 +# define sys_setjmp(2917,92719 +# define sys_longjmp(2918,92753 +enum specbind_tag 2943,93805 + SPECPDL_UNWIND,2944,93825 + SPECPDL_UNWIND_PTR,2945,93894 + SPECPDL_UNWIND_INT,2946,93945 + SPECPDL_UNWIND_VOID,2947,93993 + SPECPDL_BACKTRACE,2948,94047 + SPECPDL_LET,2949,94105 + SPECPDL_LET_LOCAL,2951,94235 + SPECPDL_LET_DEFAULT 2952,94292 +union specbinding2955,94364 + ENUM_BF 2957,94386 + ENUM_BF 2959,94443 + ENUM_BF 2964,94573 + ENUM_BF 2969,94696 + ENUM_BF 2974,94814 + ENUM_BF 2978,94919 + ENUM_BF 2983,95094 +enum handlertype 3021,96410 +enum handlertype { CATCHER,3021,96410 +enum handlertype { CATCHER, CONDITION_CASE 3021,96410 +struct handler3023,96457 + enum handlertype type;3025,96474 + Lisp_Object tag_or_ch;3026,96499 + Lisp_Object val;3027,96524 + struct handler *next;next3028,96543 + struct handler *nextfree;nextfree3029,96567 + Lisp_Object *bytecode_top;bytecode_top3036,96925 + int bytecode_dest;3037,96954 + struct gcpro *gcpro;gcpro3042,97191 + sys_jmp_buf jmp;3044,97221 + EMACS_INT lisp_eval_depth;3045,97240 + ptrdiff_t pdlcount;3046,97269 + int poll_suppress_count;3047,97291 + int interrupt_input_blocked;3048,97318 + struct byte_stack *byte_stack;byte_stack3049,97349 +#define PUSH_HANDLER(3053,97446 +extern Lisp_Object memory_signal_data;3075,98152 +extern char *stack_bottom;stack_bottom3079,98285 +extern void process_pending_signals 3097,99102 +extern bool volatile pending_signals;3098,99146 +extern void process_quit_flag 3100,99185 +#define QUIT 3101,99223 +#define QUITP 3112,99473 +extern Lisp_Object Vascii_downcase_table;3114,99534 +extern Lisp_Object Vascii_canon_table;3115,99576 +extern struct gcpro *gcprolist;gcprolist3130,100283 +struct gcpro3132,100316 + struct gcpro *next;next3134,100331 + volatile Lisp_Object *var;var3137,100400 + ptrdiff_t nvars;3140,100482 + const char *name;name3144,100567 + int lineno;3147,100623 + int idx;3150,100684 + int level;3153,100720 +#define GC_USE_GCPROS_AS_BEFORE 3171,101297 +#define GC_MAKE_GCPROS_NOOPS 3172,101332 +#define GC_MARK_STACK_CHECK_GCPROS 3173,101364 +#define GC_USE_GCPROS_CHECK_ZOMBIES 3174,101401 +#define GC_MARK_STACK 3177,101462 +#define BYTE_MARK_STACK 3181,101562 +#define GCPRO1(3190,101833 +#define GCPRO2(3191,101873 +#define GCPRO3(3192,101939 +#define GCPRO4(3194,102034 +#define GCPRO5(3196,102154 +#define GCPRO6(3198,102299 +#define GCPRO7(3201,102474 +#define UNGCPRO 3202,102553 +#define GCPRO1(3208,102653 +#define GCPRO2(3212,102775 +#define GCPRO3(3217,102967 +#define GCPRO4(3223,103229 +#define GCPRO5(3230,103560 +#define GCPRO6(3238,103961 +#define GCPRO7(3247,104431 +#define UNGCPRO 3257,104971 +extern int gcpro_level;3261,105040 +#define GCPRO1(3263,105065 +#define GCPRO2(3269,105299 +#define GCPRO3(3278,105717 +#define GCPRO4(3289,106274 +#define GCPRO5(3302,106972 +#define GCPRO6(3317,107812 +#define GCPRO7(3334,108793 +#define UNGCPRO 3353,109916 +#define RETURN_UNGCPRO(3363,110183 +void staticpro 3375,110456 +vcopy 3384,110657 +set_hash_key_slot 3393,110932 +set_hash_value_slot 3399,111071 +set_symbol_function 3408,111306 +set_symbol_plist 3414,111421 +set_symbol_next 3420,111524 +blv_found 3428,111697 +set_overlay_plist 3437,111880 +string_intervals 3445,112031 +set_string_intervals 3453,112153 +set_char_table_defalt 3462,112355 +set_char_table_purpose 3467,112467 +set_char_table_extras 3475,112636 +set_char_table_contents 3482,112845 +set_sub_char_table_contents 3489,113040 +extern Lisp_Object indirect_function 3495,113199 +extern Lisp_Object find_symbol_value 3496,113251 +enum Arith_Comparison 3497,113303 + ARITH_EQUAL,3498,113327 + ARITH_NOTEQUAL,3499,113342 + ARITH_LESS,3500,113360 + ARITH_GRTR,3501,113374 + ARITH_LESS_OR_EQUAL,3502,113388 + ARITH_GRTR_OR_EQUAL3503,113411 +extern Lisp_Object arithcompare 3505,113436 +#define INTEGER_TO_CONS(3511,113762 +#define CONS_TO_INTEGER(3529,114625 +extern intmax_t cons_to_signed 3533,114840 +extern uintmax_t cons_to_unsigned 3534,114906 +extern struct Lisp_Symbol *indirect_variable indirect_variable3536,114967 +extern _Noreturn void args_out_of_range 3537,115036 +extern _Noreturn void args_out_of_range_3 3538,115104 +extern Lisp_Object do_symval_forwarding 3540,115195 +extern void set_internal 3541,115255 +extern void syms_of_data 3542,115327 +extern void swap_in_global_binding 3543,115360 +extern void syms_of_cmds 3546,115444 +extern void keys_of_cmds 3547,115477 +extern Lisp_Object detect_coding_system 3550,115539 +extern void init_coding 3552,115692 +extern void init_coding_once 3553,115724 +extern void syms_of_coding 3554,115761 +extern ptrdiff_t chars_in_text 3557,115828 +extern ptrdiff_t multibyte_chars_in_text 3558,115895 +extern void syms_of_character 3559,115972 +extern void init_charset 3562,116040 +extern void init_charset_once 3563,116073 +extern void syms_of_charset 3564,116111 +extern void init_syntax_once 3569,116231 +extern void syms_of_syntax 3570,116268 +enum { NEXT_ALMOST_PRIME_LIMIT 3573,116329 +extern EMACS_INT next_almost_prime 3574,116368 +enum constype 3739,123820 +enum constype {CONSTYPE_HEAP,CONSTYPE_HEAP3739,123820 +enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}CONSTYPE_PURE3739,123820 +extern Lisp_Object listn 3740,123866 +list2i 3745,124010 +list3i 3751,124119 +list4i 3757,124258 +extern Lisp_Object make_uninit_bool_vector 3763,124410 +extern Lisp_Object bool_vector_fill 3764,124466 +extern _Noreturn void string_overflow 3765,124530 +extern Lisp_Object make_string 3766,124576 +extern Lisp_Object make_formatted_string 3767,124634 +extern Lisp_Object make_multibyte_string 3779,124988 +extern Lisp_Object make_event_array 3780,125067 +extern Lisp_Object make_uninit_string 3781,125131 +extern Lisp_Object make_uninit_multibyte_string 3782,125182 +extern Lisp_Object make_string_from_bytes 3783,125254 +extern Lisp_Object make_specified_string 3784,125334 +extern Lisp_Object make_pure_string 3786,125426 +extern Lisp_Object make_pure_c_string 3787,125506 +build_pure_c_string 3792,125662 +build_string 3801,125867 +extern Lisp_Object pure_cons 3806,125945 +extern void make_byte_code 3807,126002 +extern struct Lisp_Vector *allocate_vector allocate_vector3808,126053 +make_uninit_vector 3820,126438 +make_uninit_sub_char_table 3833,126657 +extern struct Lisp_Vector *allocate_pseudovector allocate_pseudovector3844,126966 +#define ALLOCATE_PSEUDOVECTOR(3850,127201 +#define ALLOCATE_ZEROED_PSEUDOVECTOR(3858,127537 +extern bool gc_in_progress;3863,127738 +extern bool abort_on_gc;3864,127766 +extern Lisp_Object make_float 3865,127791 +extern void display_malloc_warning 3866,127831 +extern ptrdiff_t inhibit_garbage_collection 3867,127874 +extern Lisp_Object make_save_int_int_int 3868,127926 +extern Lisp_Object make_save_obj_obj_obj_obj 3869,128002 +extern Lisp_Object make_save_ptr 3871,128112 +extern Lisp_Object make_save_ptr_int 3872,128155 +extern Lisp_Object make_save_ptr_ptr 3873,128213 +extern Lisp_Object make_save_funcptr_ptr_obj 3874,128268 +extern Lisp_Object make_save_memory 3876,128364 +extern void free_save_value 3877,128428 +extern Lisp_Object build_overlay 3878,128471 +extern void free_marker 3879,128545 +extern void free_cons 3880,128584 +extern void init_alloc_once 3881,128628 +extern void init_alloc 3882,128664 +extern void syms_of_alloc 3883,128695 +extern struct buffer * allocate_buffer 3884,128729 +extern int valid_lisp_object_p 3885,128776 +extern int relocatable_string_data_p 3886,128822 +extern void check_cons_list 3888,128901 +INLINE void 3890,128943 +extern void *r_alloc r_alloc3895,129064 +#define FLOAT_TO_STRING_BUFSIZE 3927,130527 +extern int openp 3957,131676 +extern Lisp_Object string_to_number 3959,131786 +extern void map_obarray 3960,131849 +extern void dir_warning 3962,131963 +extern void init_obarray 3963,132016 +extern void init_lread 3964,132049 +extern void syms_of_lread 3965,132080 +intern 3968,132134 +intern_c_string 3974,132222 +extern EMACS_INT lisp_eval_depth;3980,132335 +extern Lisp_Object Vautoload_queue;3981,132369 +extern Lisp_Object Vrun_hooks;3982,132405 +extern Lisp_Object Vsignaling_function;3983,132436 +extern Lisp_Object inhibit_lisp_code;3984,132476 +extern struct handler *handlerlist;handlerlist3985,132514 +extern void run_hook 3994,132756 +extern void run_hook_with_args_2 3995,132792 +extern Lisp_Object run_hook_with_args 3996,132866 +extern _Noreturn void xsignal 3999,133025 +extern _Noreturn void xsignal0 4000,133083 +extern _Noreturn void xsignal1 4001,133129 +extern _Noreturn void xsignal2 4002,133188 +extern _Noreturn void xsignal3 4003,133260 +extern _Noreturn void signal_error 4005,133349 +extern Lisp_Object eval_sub 4006,133413 +extern Lisp_Object apply1 4007,133461 +extern Lisp_Object call0 4008,133515 +extern Lisp_Object call1 4009,133555 +extern Lisp_Object call2 4010,133608 +extern Lisp_Object call3 4011,133674 +extern Lisp_Object call4 4012,133753 +extern Lisp_Object call5 4013,133845 +extern Lisp_Object call6 4014,133950 +extern Lisp_Object call7 4015,134068 +extern Lisp_Object internal_catch 4016,134199 +extern Lisp_Object internal_lisp_condition_case 4017,134292 +extern Lisp_Object internal_condition_case 4018,134381 +extern Lisp_Object internal_condition_case_1 4019,134494 +extern Lisp_Object internal_condition_case_2 4020,134629 +extern Lisp_Object internal_condition_case_n4021,134790 +extern void specbind 4024,134986 +extern void record_unwind_protect 4025,135035 +extern void record_unwind_protect_ptr 4026,135108 +extern void record_unwind_protect_int 4027,135175 +extern void record_unwind_protect_void 4028,135236 +extern void record_unwind_protect_nothing 4029,135294 +extern void clear_unwind_protect 4030,135344 +extern void set_unwind_protect 4031,135390 +extern void set_unwind_protect_ptr 4032,135471 +extern Lisp_Object unbind_to 4033,135546 +extern _Noreturn void error 4034,135601 +fast_string_match_ignore_case 4136,140089 +extern ptrdiff_t fast_c_string_match_ignore_case 4141,140239 +extern ptrdiff_t fast_looking_at 4143,140336 +extern ptrdiff_t find_newline 4145,140475 +extern ptrdiff_t scan_newline 4147,140604 +extern ptrdiff_t scan_newline_from_point 4149,140707 +extern ptrdiff_t find_newline_no_quit 4150,140787 +extern ptrdiff_t find_before_next_newline 4152,140884 +extern void syms_of_search 4154,140982 +extern void clear_regexp_cache 4155,141017 +extern Lisp_Object Vminibuffer_list;4159,141087 +extern Lisp_Object last_minibuf_string;4160,141124 +extern Lisp_Object get_minibuffer 4161,141164 +extern void init_minibuf_once 4162,141211 +extern void syms_of_minibuf 4163,141249 +extern void syms_of_callint 4167,141316 +extern void syms_of_casefiddle 4171,141386 +extern void keys_of_casefiddle 4172,141425 +extern void init_casetab_once 4176,141495 +extern void syms_of_casetab 4177,141533 +extern Lisp_Object echo_message_buffer;4181,141601 +extern struct kboard *echo_kboard;echo_kboard4182,141641 +extern void cancel_echoing 4183,141676 +extern Lisp_Object last_undo_boundary;4184,141711 +extern bool input_pending;4185,141750 +extern sigjmp_buf return_to_command_loop;4187,141813 +extern Lisp_Object menu_bar_items 4189,141862 +extern Lisp_Object tool_bar_items 4190,141911 +extern void discard_mouse_events 4191,141967 +void handle_input_available_signal 4193,142028 +extern Lisp_Object pending_funcalls;4195,142077 +extern bool detect_input_pending 4196,142114 +extern bool detect_input_pending_ignore_squeezables 4197,142155 +extern bool detect_input_pending_run_timers 4198,142215 +extern void safe_run_hooks 4199,142267 +extern void cmd_error_internal 4200,142309 +extern Lisp_Object command_loop_1 4201,142369 +extern Lisp_Object read_menu_command 4202,142411 +extern Lisp_Object recursive_edit_1 4203,142456 +extern void record_auto_save 4204,142500 +extern void force_auto_save_soon 4205,142537 +extern void init_keyboard 4206,142578 +extern void syms_of_keyboard 4207,142612 +extern void keys_of_keyboard 4208,142649 +extern ptrdiff_t current_column 4211,142715 +extern void invalidate_current_column 4212,142755 +extern bool indented_beyond_p 4213,142801 +extern void syms_of_indent 4214,142866 +extern void store_frame_param 4217,142929 +extern void store_in_alist 4218,143003 +extern Lisp_Object do_switch_frame 4219,143073 +extern Lisp_Object get_frame_param 4220,143146 +extern void frames_discard_buffer 4221,143212 +extern void syms_of_frame 4222,143261 +extern char **initial_argv;initial_argv4225,143323 +extern int initial_argc;4226,143351 +extern bool display_arg;4228,143426 +extern Lisp_Object decode_env_path 4230,143458 +extern Lisp_Object empty_unibyte_string,4231,143529 +extern Lisp_Object empty_unibyte_string, empty_multibyte_string;4231,143529 +extern _Noreturn void terminate_due_to_signal 4232,143594 +extern Lisp_Object Vlibrary_cache;4234,143669 +void fixup_locale 4237,143730 +void synchronize_system_messages_locale 4238,143756 +void synchronize_system_time_locale 4239,143804 +INLINE void fixup_locale 4241,143854 +INLINE void synchronize_system_messages_locale 4242,143889 +INLINE void synchronize_system_time_locale 4243,143946 +extern void shut_down_emacs 4245,144006 +extern bool noninteractive;4248,144132 +extern bool no_site_lisp;4251,144224 +extern int daemon_pipe[daemon_pipe4256,144392 +#define IS_DAEMON 4257,144419 +#define DAEMON_RUNNING 4258,144459 +extern void *w32_daemon_event;w32_daemon_event4260,144527 +#define IS_DAEMON 4261,144558 +#define DAEMON_RUNNING 4262,144603 +extern bool fatal_error_in_progress;4266,144724 +extern bool inhibit_window_system;4269,144830 +extern bool running_asynch_code;4271,144923 +extern void kill_buffer_processes 4274,144986 +extern int wait_reading_process_output 4275,145035 +# define WAIT_READING_MAX 4281,145422 +# define WAIT_READING_MAX 4283,145494 +extern void add_timer_wait_descriptor 4286,145558 +extern void add_keyboard_wait_descriptor 4288,145610 +extern void delete_keyboard_wait_descriptor 4289,145658 +extern void add_gpm_wait_descriptor 4291,145725 +extern void delete_gpm_wait_descriptor 4292,145768 +extern void init_process_emacs 4294,145821 +extern void syms_of_process 4295,145860 +extern void setup_process_coding_systems 4296,145896 +extern int child_setup 4302,146016 +extern void init_callproc_1 4303,146084 +extern void init_callproc 4304,146120 +extern void set_initial_environment 4305,146154 +extern void syms_of_callproc 4306,146198 +extern Lisp_Object read_doc_string 4309,146261 +extern Lisp_Object get_doc_string 4310,146311 +extern void syms_of_doc 4311,146372 +extern int read_bytecode_char 4312,146404 +extern void syms_of_bytecode 4315,146473 +extern struct byte_stack *byte_stack_list;byte_stack_list4316,146510 +extern void mark_byte_stack 4318,146573 +extern void unmark_byte_stack 4320,146616 +extern Lisp_Object exec_byte_code 4321,146654 +extern void init_macros 4325,146804 +extern void syms_of_macros 4326,146836 +extern void truncate_undo_list 4329,146898 +extern void record_insert 4330,146948 +extern void record_delete 4331,146998 +extern void record_first_change 4332,147056 +extern void record_change 4333,147096 +extern void record_property_change 4334,147146 +extern void syms_of_undo 4337,147288 +extern void report_interval_modification 4340,147352 +extern void syms_of_menu 4343,147448 +extern void syms_of_xmenu 4346,147509 +extern char *get_current_dir_name get_current_dir_name4356,147711 +extern void stuff_char 4358,147760 +extern void init_foreground_group 4359,147793 +extern void sys_subshell 4360,147835 +extern void sys_suspend 4361,147868 +extern void discard_tty_input 4362,147900 +extern void init_sys_modes 4363,147938 +extern void reset_sys_modes 4364,147994 +extern void init_all_sys_modes 4365,148051 +extern void reset_all_sys_modes 4366,148090 +extern void child_setup_tty 4367,148130 +extern void setup_pty 4368,148165 +extern int set_window_size 4369,148194 +extern EMACS_INT get_random 4370,148238 +extern void seed_random 4371,148274 +extern void init_random 4372,148319 +extern void emacs_backtrace 4373,148351 +extern _Noreturn void emacs_abort 4374,148386 +extern void xputenv 4527,152700 +extern char *egetenv_internal egetenv_internal4529,152737 +egetenv 4532,152809 +extern void init_system_name 4539,153012 +#define eabs(4545,153305 +#define make_fixnum_or_float(4550,153438 +enum MAX_ALLOCA 4556,153689 +enum MAX_ALLOCA { MAX_ALLOCA 4556,153689 +extern void *record_xmalloc record_xmalloc4558,153734 +#define USE_SAFE_ALLOCA 4560,153800 +#define AVAIL_ALLOCA(4564,153933 +#define SAFE_ALLOCA(4568,154044 +#define SAFE_NALLOCA(4576,154385 +#define SAFE_ALLOCA_STRING(4590,154861 +#define SAFE_FREE(4598,155113 +#define SAFE_ALLOCA_LISP(4625,155691 +# define USE_STACK_LISP_OBJECTS 4652,156813 +# undef USE_STACK_LISP_OBJECTS4658,156979 +# define USE_STACK_LISP_OBJECTS 4659,157010 +enum { defined_GC_CHECK_STRING_BYTES 4663,157085 +enum { defined_GC_CHECK_STRING_BYTES 4665,157138 +union Aligned_Cons4670,157272 + struct Lisp_Cons s;4672,157293 + double d;4673,157315 + double d; intmax_t i;4673,157315 + double d; intmax_t i; void *p;p4673,157315 +union Aligned_String4676,157352 + struct Lisp_String s;4678,157375 + double d;4679,157399 + double d; intmax_t i;4679,157399 + double d; intmax_t i; void *p;p4679,157399 + USE_STACK_CONS 4689,157707 + USE_STACK_STRING 4691,157813 +#define STACK_CONS(4699,158150 +#define AUTO_CONS_EXPR(4701,158247 +#define AUTO_CONS(4709,158610 +#define AUTO_LIST1(4710,158681 +#define AUTO_LIST2(4712,158789 +#define AUTO_LIST3(4716,158944 +#define AUTO_LIST4(4720,159119 +extern const char *verify_ascii verify_ascii4730,159456 +# define verify_ascii(4732,159510 +#define AUTO_STRING(4740,159818 +#define FOR_EACH_TAIL(4752,160282 +#define FOR_EACH_ALIST_VALUE(4766,160773 +maybe_gc 4774,161060 +functionp 4784,161299 + +c-src/machsyscalls.c,23 +#define SYSCALL(6,113 + +c-src/machsyscalls.h,159 +SYSCALL (mach_msg_trap,1,0 +SYSCALL (mach_reply_port,13,314 +SYSCALL (mach_thread_self,18,377 +SYSCALL (mach_task_self,23,441 +SYSCALL (mach_host_self,28,503 + +c-src/fail.c,30 +void (*prt_call(prt_call1,0 + +c-src/h.h,2506 + ELEM_I/ELEM_I3,15 +} Fails_t;5,85 +typedef void Lang_function 6,96 +void Asm_labels 7,127 +typedef struct tpcmd8,147 +#define ggg 10,170 + } arg;13,198 +tpcmd;15,209 +typedef struct foobar2_ 16,216 + fu int (*funcptr)funcptr17,242 + long foo;18,279 + char bar;19,293 +} foobar2;20,307 + DEVICE_SWP,23,333 + DEVICE_LAST24,349 +} bsp_DevId;25,365 + struct constant_args 27,394 + unsigned int burst;28,419 + } constant;29,443 +} args;30,457 +typedef int *regset;regset31,465 +typedef int INT;32,486 +typedef union abc33,503 + int def;35,523 +} ghi1;36,534 +typedef union abc 37,542 + int def;38,562 +} ghi2;39,573 +typedef struct a 40,581 +} b;41,600 +#define c(42,605 +typedef struct an_extern_linkage *an_extern_linkage_ptr;an_extern_linkage_ptr43,619 +typedef struct an_extern_linkage 44,676 + kind;46,733 + is_explicit;49,812 + a_byte_boolean is_curly_brace_form;54,1009 +} an_extern_linkage;56,1054 +typedef struct pollfd pfdset[pfdset57,1075 +typedef union rtunion_def58,1119 + int rtint;60,1149 + char *rtstr;rtstr61,1164 + struct rtx_def *rtx;rtx62,1181 + } womboid 63,1206 +typedef union rtunion_def64,1220 + int rtint;68,1250 + char *rtstr;rtstr69,1263 + struct rtx_def *rtxp;rtxp70,1278 + struct rtx_def rtxnp;71,1302 +womboid75,1330 +enum {dog,dog81,1416 +enum {dog, cat}cat81,1416 +enum {dog, cat} animals;81,1416 +typedef void (_CALLBACK_ *signal_handler)signal_handler82,1441 +typedef void (_CALLBACK_ *signal_handler1)signal_handler183,1489 +/* comment */ #define ANSIC84,1538 + #define ANSIC85,1566 +typedef void (proc)87,1588 +typedef void OperatorFun(88,1612 +typedef int f(89,1648 +struct my_struct 91,1691 +typedef struct my_struct my_typedef;93,1713 +typedef RETSIGTYPE (*signal_handler_t)signal_handler_t94,1750 + Date 04 May 87 235311 PDT 96,1802 +typedef unsigned char unchar;99,1880 +typedef int X,100,1910 +typedef int X, Y,100,1910 +typedef int X, Y, Z;100,1910 +typedef mio mao;101,1931 +extern void ab(102,1948 +typedef struct a 103,1966 +typedef struct a { } b;103,1966 +typedef struct b104,1990 +} c;106,2009 +int (*oldhup)oldhup107,2014 +request (*oldhup)oldhup108,2031 +int extvar;109,2053 +#define tag1110,2065 +#define aaaaaa 111,2078 +#define bbbbbb\bbbbbb113,2102 +#define cccccccccc115,2125 +#define enter_critical_section 116,2144 +#define exit_critical_to_previous 117,2199 +#define UNDEFINED118,2259 +struct re_pattern_buffer 119,2277 +struct re_pattern_buffer { unsigned char *buffer;buffer119,2277 + +cp-src/c.C,3133 +template ,ipcMultiChannel,ipc3dLinkControl> mcCSC;6,227 + advTimer cscInitTime;7,388 + advTimer cscSegmentationTime;8,418 + advTimer outputTime;9,456 + void execute(11,493 +static void my_function1(24,984 +int main 25,1026 +double base 26,1088 +operator += operator +=29,1174 +class TestRecord;31,1233 +typedef struct s1 32,1251 + int counter;33,1271 +} t1;34,1287 +struct s2 35,1293 + int counter;36,1305 +typedef struct s2 t2;38,1324 +class A 39,1346 + enum { rosso,40,1356 + enum { rosso, giallo,40,1356 + enum { rosso, giallo, verde 40,1356 + enum { rosso, giallo, verde } colori;40,1356 + const A& operator+(41,1396 +const A& A::operator+(operator+43,1431 +void operator+(44,1467 +void operator -(operator -45,1495 +void operator int(operator int46,1524 +A* f(48,1556 +int f(49,1571 +int A::f(f50,1590 +A > A,int>::f(f51,1618 +template class AT 52,1668 +template class AT { C t[t52,1668 +class AU 53,1716 +class AU { T x;53,1716 +class B<B54,1735 +class B { void f(54,1735 +const A::B::T& abt 55,1766 +class A 56,1792 +class A { class B 56,1792 +class A { class B { int f(56,1792 +class A 57,1827 + int get_data(58,1837 + A operator+(59,1861 +is_muldiv_operation(61,1888 +domain foo 68,1956 + void f(69,1969 +void A::A(A72,1990 +struct A 73,2005 +struct A { A(73,2005 +struct B 74,2023 +struct B { B(74,2023 +void B::B(B75,2042 +void BE_Node::BE_Node(BE_Node76,2057 +class BE_Node 77,2084 +struct foo 79,2103 + int x;80,2116 +class test 86,2157 + int f(87,2170 + int ff(89,2232 + int g(90,2255 +class AST_Root 92,2279 +class AST_Root;96,2328 +AST_ConcreteType::AST_ConcreteType(99,2394 +AST_Array::AST_Array(107,2533 + void f(115,2734 +struct A 117,2754 + ~A(118,2765 +A::~A(~A120,2778 +struct B 122,2790 + ~B(123,2801 +enum {dog,dog126,2818 +enum {dog, cat}cat126,2818 +enum {dog, cat} animals;126,2818 +struct {int teats;127,2843 +struct {int teats;} cow;127,2843 +class Boo 129,2869 + enum {dog,dog130,2881 + enum {dog, cat}cat130,2881 + enum {dog, cat} animals;130,2881 + struct {int treats;131,2910 + struct {int treats;} cow;131,2910 + int i,132,2940 + int i,a,132,2940 + int i,a,b;132,2940 + foo(133,2955 + Boo(137,2996 + Boo(138,3053 +Boo::Boo(141,3071 +typedef int should_see_this_one_enclosed_in_extern_C;149,3156 +typedef int (*should_see_this_function_pointer)should_see_this_function_pointer153,3229 +typedef int should_see_this_array_type[should_see_this_array_type156,3311 + +cp-src/x.cc,102 +class XX1,0 + int foo(4,19 + void bar(5,35 +XX::foo(foo9,60 +XX::bar(bar15,95 +main(21,126 + +cp-src/burton.cpp,124 +::dummy::dummy test::dummy1(dummy11,0 +::dummy::dummy test::dummy2(dummy26,64 +::dummy::dummy test::dummy3(dummy311,143 + +cp-src/functions.cpp,778 +void Date::setDate setDate5,148 +void Date::plus plus32,939 +void Date::minus minus42,1229 +void Date::shift shift52,1407 +Date & Date::operator = operator =62,1628 +Date & Date::operator += operator +=69,1789 +Date & Date::operator -= operator -=78,1939 +Date & Date::operator ++ operator ++87,2080 +Date & Date::operator -- operator --96,2216 +int Date::operator - operator -104,2331 +int Date::operator < operator <112,2483 +int Date::operator > operator >116,2557 +int Date::operator == operator ==120,2631 +ostream& operator << operator <<124,2707 +istream& operator >> operator >>133,2943 +bool isLeap 159,3543 +bool isHoliday 163,3629 +void asort(173,3865 +void ReadVacation 186,4064 +void Debug 201,4523 +int WorkingDays(211,4867 +Date StartDay(226,5129 + +cp-src/MDiagArray2.h,1194 +#define octave_MDiagArray2_h 29,870 +#undef LTGT35,967 +#define LTGT39,1031 +#define LTGT 42,1051 +class MDiagArray2;45,1087 +operator += operator +=48,1145 +operator -= operator -=51,1242 +operator * operator *54,1339 +operator / operator /57,1428 +operator * operator *60,1517 +operator + operator +63,1605 +operator - operator -66,1707 +product 69,1808 +operator - operator -72,1907 +class MDiagArray2 78,2022 + MDiagArray2 82,2077 + MDiagArray2 86,2154 + MDiagArray2 87,2198 + MDiagArray2 88,2254 + MDiagArray2 89,2329 + MDiagArray2 90,2387 + MDiagArray2 91,2450 + ~MDiagArray2 93,2515 + MDiagArray2& operator = operator =95,2542 + DiagArray2::operator = operator =97,2603 + operator MArray2 operator MArray2101,2667 + operator += operator +=116,2966 + operator -= operator -=119,3057 + friend MDiagArray2 operator * operator *123,3174 + friend MDiagArray2 operator / operator /124,3253 + friend MDiagArray2 operator * operator *128,3384 + operator + operator +133,3544 + operator - operator -136,3640 + friend MDiagArray2 operator - operator -141,3803 +#undef LTGT144,3874 +#define INSTANTIATE_MDIAGARRAY_FRIENDS(146,3887 + +cp-src/Range.h,784 +#define octave_Range_h 24,765 +class istream;30,840 +class ostream;31,855 +class Matrix;32,870 +Range35,891 + Range 39,909 + Range 42,995 + Range 46,1130 + Range 50,1248 + double base 54,1376 + double limit 55,1425 + double inc 56,1475 + int nelem 57,1523 + bool all_elements_are_ints 59,1571 + Matrix matrix_value 61,1615 + double min 63,1652 + double max 64,1679 + void sort 66,1707 + void set_base 68,1728 + void set_limit 69,1774 + void set_inc 70,1821 + friend ostream& operator << operator <<72,1867 + friend istream& operator >> operator >>73,1928 + void print_range 75,1984 + double rng_base;79,2023 + double rng_limit;80,2042 + double rng_inc;81,2062 + int rng_nelem;83,2081 + int nelem_internal 85,2099 +extern Range operator - operator -88,2138 + +cp-src/screen.cpp,228 +unsigned char cursor_x,15,548 +unsigned char cursor_x, cursor_y;15,548 +static union REGS regs;16,582 +void goto_xy(18,607 +void hide_cursor(27,774 +void cursor_position(32,836 +void clear_screen(41,997 +void write_xyc(55,1247 + +cp-src/screen.hpp,538 +#define __COLORS9,401 +enum COLORS 11,419 + BLACK,12,433 + BLUE,13,471 + GREEN,14,481 + CYAN,15,492 + RED,16,502 + MAGENTA,17,511 + BROWN,18,524 + LIGHTGRAY,19,535 + DARKGRAY,20,550 + LIGHTBLUE,21,589 + LIGHTGREEN,22,604 + LIGHTCYAN,23,620 + LIGHTRED,24,635 + LIGHTMAGENTA,25,649 + YELLOW,26,667 + WHITE27,679 +#define SCREEN_FP(31,700 +#define SCREEN_START 33,795 +void goto_xy(35,835 +void hide_cursor(36,883 +void cursor_position(37,907 +void clear_screen(38,935 +void write_xyc(39,960 + +cp-src/conway.cpp,288 +#define max(12,357 +#define min(13,393 +const int num_rows 15,430 +const int num_columns 16,470 +class site *field_of_play[field_of_play18,499 +int site::total_surrounding(total_surrounding20,550 +void display(37,958 +void glider(50,1239 +void traffic_light(59,1478 +void main(67,1633 + +cp-src/conway.hpp,322 +class site:site5,235 + char x,7,269 + char x, y,7,269 + char x, y, alive,7,269 + char x, y, alive, next_alive;7,269 + int total_surrounding(8,303 + site(10,344 + ~site(11,397 + char read(12,410 + void set(13,444 + void clear(14,478 + void compute_next_state(15,514 + void step(22,717 + +cp-src/clheir.cpp,359 +const int max_num_generic_objects 9,298 +generic_object * object_registry[object_registry10,340 +void init_registry(12,400 +void step_everybody(19,527 +void discrete_location::clear_neighbors(clear_neighbors31,852 +generic_object::generic_object(generic_object36,981 +generic_object::~generic_object(~generic_object48,1255 +void agent::move(move53,1353 + +cp-src/clheir.hpp,990 +extern void init_registry(10,452 +extern void step_everybody(11,485 +class generic_object13,520 + int where_in_registry;15,547 + generic_object(17,582 + ~generic_object(19,724 + virtual void compute_next_state(21,843 + virtual void step(22,889 +const int max_num_directions 31,1220 +class location:location33,1290 + location(43,1643 + ~location(44,1662 +class irregular_location:irregular_location47,1687 + double x,49,1735 + double x, y,49,1735 + double x, y, z;49,1735 + irregular_location(51,1763 + ~irregular_location(53,1855 +class discrete_location:discrete_location56,1890 + int x,58,1937 + int x, y,58,1937 + int x, y, z;58,1937 + class location *neighbors[neighbors59,1954 + void clear_neighbors(60,2005 + discrete_location(62,2045 + ~discrete_location(65,2155 + void assign_neighbor(66,2185 +class agent:agent75,2509 + location *where;where77,2550 + agent(79,2579 + ~agent(80,2592 + void move(81,2606 + +cp-src/fail.C,351 +struct A 7,263 + struct B 8,274 + struct C 9,289 + int x;10,305 + C(11,318 + operator int(operator int12,342 + typedef C T;14,389 + typedef B T2;16,414 +class String;20,437 +class A 23,453 + class B 24,463 + class C 25,474 + int f(26,488 +int A::B::f(f31,521 +main(37,571 + class D 41,622 + D(43,659 + int x;44,694 + +el-src/TAGTEST.EL,148 +(foo::defmumble bletch 1,0 +(defalias 'pending-delete-mode pending-delete-mode5,102 +(defalias (quote explicitly-quoted-pending-delete-mode)8,175 + +el-src/emacs/lisp/progmodes/etags.el,5188 +(defvar tags-file-name 34,1034 +(defgroup etags 43,1498 +(defcustom tags-case-fold-search 47,1566 +(defcustom tags-table-list 59,2051 +(defcustom tags-compression-info-list69,2449 +(defcustom tags-add-tables 88,3231 +(defcustom tags-revert-without-query 98,3627 +(defvar tags-table-computed-list 103,3778 +(defvar tags-table-computed-list-for 112,4262 +(defvar tags-table-list-pointer 117,4510 +(defvar tags-table-list-started-at 121,4701 +(defvar tags-table-set-list 124,4821 +(defcustom find-tag-hook 129,5000 +(defcustom find-tag-default-function 137,5263 +(define-obsolete-variable-alias 'find-tag-marker-ring-lengthfind-tag-marker-ring-length145,5602 +(defcustom tags-tag-face 148,5699 +(defcustom tags-apropos-verbose 154,5834 +(defcustom tags-apropos-additional-actions 160,5998 +(defvaralias 'find-tag-marker-ring find-tag-marker-ring183,6917 +(defvar default-tags-table-function 189,7097 +(defvar tags-location-ring 194,7323 +(defvar tags-table-files 201,7599 +(defvar tags-completion-table 206,7766 +(defvar tags-included-tables 209,7858 +(defvar next-file-list 212,7953 +(defvar tags-table-format-functions 217,8059 +(defvar file-of-tag-function 224,8440 +(defvar tags-table-files-function 228,8634 +(defvar tags-completion-table-function 230,8745 +(defvar snarf-tag-function 232,8840 +(defvar goto-tag-location-function 236,9049 +(defvar find-tag-regexp-search-function 239,9222 +(defvar find-tag-regexp-tag-order 241,9343 +(defvar find-tag-regexp-next-line-after-failure-p 243,9452 +(defvar find-tag-search-function 245,9572 +(defvar find-tag-tag-order 247,9679 +(defvar find-tag-next-line-after-failure-p 249,9774 +(defvar list-tags-function 251,9880 +(defvar tags-apropos-function 253,9968 +(defvar tags-included-tables-function 255,10062 +(defvar verify-tags-table-function 257,10181 +(defun initialize-new-tags-table 260,10292 +(defun tags-table-mode 276,10980 +(defun visit-tags-table 285,11245 +(defun tags-table-check-computed-list 321,12783 +(defun tags-table-extend-computed-list 360,14654 +(defun tags-expand-table-name 400,16367 +(defun tags-table-list-member 409,16710 +(defun tags-verify-table 421,17182 +(defun tags-table-including 470,19302 +(defun tags-next-table 522,21346 +(defun visit-tags-table-buffer 543,22203 +(defun tags-reset-tags-tables 712,28513 +(defun file-of-tag 731,29170 +(defun tags-table-files 740,29519 +(defun tags-included-tables 749,29869 +(defun tags-completion-table 755,30115 +(defun tags-lazy-completion-table 783,31309 +(defun tags-completion-at-point-function 799,31944 +(defun find-tag-tag 818,32694 +(defvar last-tag 837,33367 +(defun find-tag-interactive 840,33426 +(defvar find-tag-history 852,33841 +(defvar etags-case-fold-search)855,33906 +(defvar etags-syntax-table)856,33938 +(defvar local-find-tag-hook)857,33966 +(defun find-tag-noselect 860,34011 +(defun find-tag 932,37125 +(defun find-tag-other-window 959,38341 +(defun find-tag-other-frame 1000,40269 +(defun find-tag-regexp 1025,41443 +(defalias 'pop-tag-mark pop-tag-mark1049,42605 +(defvar tag-lines-already-matched 1052,42656 +(defun find-tag-in-order 1055,42763 +(defun tag-find-file-of-tag-noselect 1167,47109 +(defun tag-find-file-of-tag 1200,48955 +(defun etags-recognize-tags-table 1208,49181 +(defun etags-verify-tags-table 1241,50812 +(defun etags-file-of-tag 1246,51010 +(defun etags-tags-completion-table 1256,51345 +(defun etags-snarf-tag 1286,52551 +(defun etags-goto-tag-location 1324,54120 +(defun etags-list-tags 1388,56563 +(defmacro tags-with-face 1423,57838 +(defun etags-tags-apropos-additional 1431,58171 +(defun etags-tags-apropos 1465,59408 +(defun etags-tags-table-files 1527,61617 +(defun etags-tags-included-tables 1542,62053 +(defun tags-recognize-empty-tags-table 1559,62593 +(defun tag-exact-file-name-match-p 1587,63739 +(defun tag-file-name-match-p 1596,64132 +(defun tag-exact-match-p 1609,64688 +(defun tag-implicit-name-match-p 1620,65256 +(defun tag-symbol-match-p 1633,65856 +(defun tag-word-match-p 1643,66292 +(defun tag-partial-file-name-match-p 1652,66690 +(defun tag-any-match-p 1662,67134 +(defun tag-re-match-p 1667,67318 +(defcustom tags-loop-revert-buffers 1675,67567 +(defun next-file 1685,67976 +(defvar tags-loop-operate 1760,70890 +(defvar tags-loop-scan1763,70984 +(defun tags-loop-eval 1771,71313 +(defun tags-loop-continue 1782,71642 +(defun tags-search 1850,73948 +(defun tags-query-replace 1871,74774 +(defun tags-complete-tags-table-file 1896,75998 +(defun list-tags 1906,76377 +(defun tags-apropos 1934,77330 +(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78156 +(defun select-tags-table 1964,78395 +(defvar select-tags-table-mode-map 2019,80522 +(define-derived-mode select-tags-table-mode 2030,80905 +(defun select-tags-table-select 2034,81089 +(defun select-tags-table-quit 2043,81455 +(defun complete-tag 2049,81610 +(defconst etags--xref-limit 2074,82551 +(defvar etags-xref-find-definitions-tag-order 2076,82586 +(defun etags-xref-find 2082,82876 +(defun etags--xref-find-definitions 2096,83405 +(defclass xref-etags-location 2129,85119 +(defun xref-make-etags-location 2135,85342 +(cl-defmethod xref-location-marker 2139,85497 +(cl-defmethod xref-location-line 2146,85741 + +erl-src/gs_dialog.erl,98 +-define(VERSION2,32 +behaviour_info(51,2177 +show(124,5458 +dialog_loop(219,9529 +test(252,10806 + +f-src/entry.for,172 + LOGICAL FUNCTION PRTPKG 3,75 + ENTRY SETPRT 194,3866 + ENTRY MSGSEL 395,8478 + & intensity1(577,12231 + character*(*) function foo(579,12307 + +f-src/entry.strange_suffix,172 + LOGICAL FUNCTION PRTPKG 3,75 + ENTRY SETPRT 194,3866 + ENTRY MSGSEL 395,8478 + & intensity1(577,12231 + character*(*) function foo(579,12307 + +f-src/entry.strange,172 + LOGICAL FUNCTION PRTPKG 3,75 + ENTRY SETPRT 194,3866 + ENTRY MSGSEL 395,8478 + & intensity1(577,12231 + character*(*) function foo(579,12307 + +forth-src/test-forth.fth,408 +: a-forth-word 20,301 +99 constant a-forth-constant!22,343 +55 value a-forth-value?23,373 +create :a-forth-dictionary-entry24,397 +defer #a-defer-word27,460 +: (another-forth-word)(another-forth-word29,481 + 9 field >field136,582 + 5 field >field237,605 +constant (a-forth-constant(a-forth-constant38,628 +2000 buffer: #some-storage41,657 +code assemby-code-word 43,685 +: a-forth-word 50,870 + +go-src/test.go,48 +package main1,0 +func say(5,28 +func main(9,72 + +go-src/test1.go,172 +package main1,0 +type plus 5,28 +type str 9,65 +type intNumber 13,99 +func (s str) PrintAdd(17,136 +func (n intNumber) PrintAdd(21,189 +func test(25,248 +func main(29,285 + +html-src/softwarelibero.html,200 +Cos'è il software libero?4,38 +Licenze d'uso di un programmalicenze65,2500 +Sfatiamo alcuni miti138,6118 +Il movimento open sourceoss191,8037 +Impatto pratico del software liberoimpatto231,10066 + +html-src/index.shtml,104 + 8,281 +In evidenza15,447 +Comunicati e iniziative32,976 +Ultime notizie dall'associazione63,2030 + +html-src/algrthms.html,467 +Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms7,277 +Descriptionalgorithms10,481 +Generating the Datagenalgorithm48,1995 +Convolutionallyconalgorithm55,2512 +Nextstatetable262,11587 +Outputoutputtable350,13915 +Mapping the Channel Symbolsmapping433,16213 +Adding Noise to theaddnoise439,16607 +Quantizing the Receivedquantizing469,19100 + +html-src/software.html,439 +Francesco Potortì Software Page9,280 +Software that I wrote for supporting my research activitysimulation36,1398 +MTGmtg41,1482 +Fracasfracas65,2624 +GaliLEOgalileo101,4232 +Leasqrleasqr114,4677 +Free software that I wrote for the GNU project or for my personal or workgnu142,6065 +Etagsetags148,6180 +checkiso161,6729 +cgrep178,7547 +debian-bug.eldebian-bug190,7979 +tcpdump205,8564 +Links to interesting softwarelinks216,8891 + +lua-src/allegro.lua,400 +local function get_layer_by_name 7,175 +local function count_layers 33,621 +function GetLayerByName 54,980 +function GetUniqueLayerName 65,1204 +function SelectLayer 76,1415 +function NewLayer 86,1773 +function NewLayerSet 144,3226 +function RemoveLayer 170,3750 +function MoveLayerTop 211,4767 +function MoveLayerBottom 223,5079 +function MoveLayerBefore 236,5457 +function MoveLayerAfter 258,6090 + +lua-src/test.lua,442 +function Rectangle.getPos 2,15 +function Rectangle.getPos getPos2,15 +function Circle.getPos 6,61 +function Circle.getPos getPos6,61 +function Cube.data.getFoo 10,102 +function Cube.data.getFoo getFoo10,102 +function Square.something:Bar 14,148 +function Square.something:Bar Bar14,148 + function test.me_22a(22,241 + function test.me_22a(me_22a22,241 + local function test.me22b 25,297 + local function test.me22b me22b25,297 + +make-src/Makefile,2175 +LATEST=1,0 +RELEASELIST=2,10 +ADASRC=4,104 +ASRC=5,171 +CSRC=6,197 +CPSRC=10,423 +ELSRC=13,614 +ERLSRC=14,661 +FORTHSRC=15,702 +FSRC=16,726 +HTMLSRC=17,776 +JAVASRC=18,844 +LUASRC=19,907 +MAKESRC=20,926 +OBJCSRC=21,943 +OBJCPPSRC=22,999 +PASSRC=23,1035 +PERLSRC=24,1053 +PHPSRC=25,1108 +PSSRC=26,1156 +PROLSRC=27,1173 +PYTSRC=28,1210 +TEXSRC=29,1227 +YSRC=30,1282 +SRCS=31,1325 +NONSRCS=35,1577 +VHDLFLAGS=37,1624 +COBOLFLAGS=38,1827 +POSTSCRIPTFLAGS=39,1889 +TCLFLAGS=40,1943 +GETOPTOBJS=42,2002 +RXINCLUDE=43,2034 +REGEXOBJS=44,2056 +CHECKOBJS=46,2075 +CHECKFLAGS=47,2105 +OBJS=48,2145 +CPPFLAGS=49,2190 +LDFLAGS=50,2259 +WARNINGS=51,2282 +CFLAGS=52,2466 +FASTCFLAGS=55,2530 +FASTCFLAGSWARN=56,2591 +FILTER=58,2641 +REGEX=59,2695 +xx=60,2741 +MAKE:MAKE62,2790 +RUN=63,2825 +RUN=64,2865 +OPTIONS=65,2870 +ARGS=66,2922 +infiles 68,2940 +quiettest:quiettest70,3002 +test:test79,3409 +${CHECKOBJS}:${CHECKOBJS}88,3805 +checker:checker90,3849 +standalone:standalone96,4062 +prof:prof101,4168 +fastetags:fastetags104,4198 +fastctags:fastctags108,4322 +staticetags:staticetags112,4446 +rsynctofly:rsynctofly116,4608 +rsyncfromfly:rsyncfromfly119,4698 +web ftp publish:web ftp publish122,4794 +release distrib:release distrib129,5115 +tags:tags134,5255 +clean:clean136,5267 +srclist:srclist139,5302 +regexfile:regexfile143,5391 +/home/www/pub/etags.c.gz:/home/www/pub/etags.c.gz149,5566 +/home/www/pub/software/unix/etags.tar.gz:/home/www/pub/software/unix/etags.tar.gz156,5825 +regex.o:regex.o159,6031 +getopt.o:getopt.o162,6086 +getopt1.o:getopt1.o165,6147 +etags:etags168,6210 +ctags:ctags171,6299 +man manpage:man manpage174,6396 +etags.1.man:etags.1.man176,6422 +maintaining.info:maintaining.info179,6475 +TAGS:TAGS182,6557 +%ediff:%ediff185,6587 +oediff:oediff188,6677 +%cdiff:%cdiff191,6764 +xdiff:xdiff194,6854 +ETAGS:ETAGS197,6942 +ETAGS%:ETAGS%200,7012 +ETAGS13 ETAGS14 ETAGS15:ETAGS13 ETAGS14 ETAGS15203,7084 +ETAGS12:ETAGS12206,7216 +OTAGS:OTAGS209,7304 +CTAGS:CTAGS212,7369 +CTAGS%:CTAGS%215,7443 +CTAGS13 CTAGS14 CTAGS15:CTAGS13 CTAGS14 CTAGS15218,7545 +EXTAGS:EXTAGS221,7680 +.PRECIOUS:.PRECIOUS224,7838 +FRC:FRC226,7894 + +objc-src/Subprocess.h,98 +#define Subprocess 41,1217 +#define BUFFERSIZE 43,1267 +@interface Subprocess:Subprocess45,1292 + +objc-src/Subprocess.m,476 +#define PTY_TEMPLATE 20,494 +#define PTY_LENGTH 21,528 +static void showError(23,551 +@interface Subprocess(Private)32,737 +- childDidExit39,851 +- fdHandler:fdHandler67,1589 +showError 98,2360 +fdHandler 112,2785 +getptys 119,2907 +- init:init183,4815 + andStdErr:init197,5147 +- send:(const char *)string withNewline:send300,7436 +- send:send308,7599 +- terminateInput314,7689 +- terminate:terminate321,7810 +- setDelegate:setDelegate332,7961 +- delegate338,8031 + +objc-src/PackInsp.h,109 +#define NUMSTATS 36,1101 +#define TYPESTOSTAT 37,1120 +@interface PackageInspector:PackageInspector39,1172 + +objc-src/PackInsp.m,1322 +static const char RCSid[RCSid30,1032 +#define VERSION 34,1116 +# define DEBUG 37,1155 +#define LISTCONTENTS 39,1181 +#define OPENBUTTON 47,1352 +#define LISTCONTENTSBUTTON 48,1449 +#define LISTDESCRIPTIONBUTTON 49,1562 +#define STATE_UNINSTALLED 52,1687 +#define STATE_INSTALLED 53,1807 +#define STATE_COMPRESSD 54,1948 +#define SIZEFORMAT 57,2152 +#define KBYTES 58,2362 +#define MBYTES 59,2473 +#define LOCALIZE(61,2585 +#define LOCALIZE_ARCH(62,2668 ++newnew67,2802 +-showInfo:showInfo93,3417 +-revert:revert107,3737 +-ok:ok136,4297 +-loadload143,4424 +#define LOOKUP(156,4826 +#undef LOOKUP176,5694 +-loadKeyValuesFrom:(const char *)type inTable:loadKeyValuesFrom186,5852 +-loadContentsOf:(const char *)type inTable:loadContentsOf238,7079 +-loadImageloadImage257,7552 +#define STAT_EQ(275,7940 +-(BOOL)shouldLoad280,8116 +-toggleDescriptiontoggleDescription301,8626 +-(const char *)getPath:(char *)buf forType:getPath317,8899 +-setRevertButtonTitlesetRevertButtonTitle333,9320 +-(const char *)formatSize:(const char *)size inBuf:formatSize344,9525 +#define WORKING 368,10045 +-(void)getArchs370,10100 +-(void)addArchs:addArchs385,10520 +-subprocess:(Subprocess *)sender output:subprocess428,11351 +-subprocessDone:subprocessDone436,11484 +static void openInWorkspace(446,11634 +-open:open464,12063 + +objcpp-src/SimpleCalc.H,41 +@interface SimpleCalc:SimpleCalc14,400 + +objcpp-src/SimpleCalc.M,445 +- init52,1747 +- appendToDisplay:appendToDisplay60,1933 +- registerAction:registerAction70,2210 +- decimalKey:decimalKey77,2348 +- numberKeys:numberKeys91,2661 +- equalsKey:equalsKey112,3192 +- operationKeys:operationKeys131,3680 +- clearKey:clearKey153,4301 +- clearAllKey:clearAllKey160,4410 +- appDidInit:appDidInit168,4591 +- windowWillClose:windowWillClose178,4882 +- infoPanel:infoPanel186,5132 +- helpPanel:helpPanel198,5482 + +pas-src/common.pas,1875 +procedure InitializeStringPackage;26,527 +function newtextstring;34,874 +procedure disposetextstring;52,1404 +function ConcatT;78,2066 +function AppendTextString;112,3238 +function CopyTextString;132,3947 +procedure CONVERT_CHARSTRING_TO_VALUE;151,4505 +procedure append_string;172,5166 +function To_Upper;186,5462 +function To_Lower;194,5617 +function EmptyNmStr(209,6213 +function chartonmstr;219,6436 +function LowerCaseNmStr;230,6682 +function concatenatenamestrings;242,7007 +procedure writenamestring;263,7517 +function IsControlChar;277,7928 +function namestringequal;283,8079 +function NameStringLess;302,8539 +function IsControlCharName(343,9710 +function SubString;358,10208 +function SkipChars;379,10791 +function RemoveUnderlineControl;397,11311 +procedure First100Chars;427,12162 +procedure SkipSpaces;462,13298 +function SkipBlanks;477,13782 +function stripname;505,14595 +function Locate;522,15039 +function NameHasChar;543,15581 +function integertonmstr;561,16134 +function NmStrToInteger;585,16901 +function AddNullToNmStr;600,17317 +function ValToNmStr;611,17585 +function ChangeFileType;625,18037 +function StripPath;647,18734 +function ReprOfChar;675,19343 +procedure ExtractCommentInfo;702,20749 +procedure INSERT_TREE_NODE;784,24053 +function GetNameList;920,27926 +procedure DisposeANameList(925,28010 +procedure DisposeNameList;938,28340 +function GetNewNameListNode;943,28409 +function insertname;972,29051 +procedure InitNameList;988,29471 +procedure InitNameStringPool;998,29767 +procedure NewNameString;1004,29867 +procedure ReleaseNameString;1022,30232 +procedure SDTrefStringToRec 1045,30741 +procedure SDTrefSkipSpaces;1059,31092 +function SDTrefIsEnd 1070,31323 +function SDTrefGetInteger 1082,31529 +procedure SDTrefRecToString 1303,37546 +function NmStrToErrStr;1497,42305 +function ErrStrToNmStr;1509,42557 +function GetTextRef;1529,43112 + +php-src/lce_functions.php,2864 + define("LCE_FUNCTIONS"LCE_FUNCTIONS4,38 + define("LCE_UNKNOWN"LCE_UNKNOWN9,145 + define("LCE_WS"LCE_WS11,194 + define("LCE_COMMENT"LCE_COMMENT13,244 + define("LCE_COMMENT_USER"LCE_COMMENT_USER15,303 + define("LCE_COMMENT_TOOL"LCE_COMMENT_TOOL17,366 + define("LCE_MSGID"LCE_MSGID19,430 + define("LCE_MSGSTR"LCE_MSGSTR21,488 + define("LCE_TEXT"LCE_TEXT23,541 + define("STATE_ABORT"STATE_ABORT25,567 + define("STATE_OK"STATE_OK26,595 + define("STATE_LOOP"STATE_LOOP27,620 + class POEntryAD 29,648 + function validate(31,683 + function checkQuotation(59,1384 + class CommentAD 70,1639 + var $prefix;72,1674 + function CommentAD(73,1693 + function validate(83,1944 + class POEntry 105,2410 + var $msgid;107,2454 + var $msgstr;108,2472 + var $user_comment;109,2491 + var $sys_comment;110,2516 + var $unk_comment;111,2540 + var $msgid_lc 113,2565 + var $msgstr_lc 114,2590 + var $user_comment_lc 115,2616 + var $sys_comment_lc 116,2648 + var $unk_comment_lc 117,2679 + function POEntry(119,2711 + function lineCount(135,3255 + function serializeToVars(141,3365 + function write(151,3800 + class POReader 163,4178 + var $msgid;165,4223 + var $msgstr;166,4241 + var $user_comment;167,4260 + var $sys_comment;168,4285 + var $unk_comment;169,4309 + var $state;170,4333 + var $ignore_ws;171,4351 + var $po_entries;172,4373 + var $poe_num;173,4396 + var $filename;174,4416 + var $domain;175,4437 + function gettext(177,4457 + function parseFromVars(189,4705 + function serializeToVars(215,5331 + function POReader(229,5613 + function read(243,5983 + function write(259,6307 + function isComment(277,6645 + function comment(284,6822 + function msgid(304,7247 + function msgstr(320,7574 + function start(340,8232 + function createPOEntries(360,8644 + function stripLine(394,9472 + function printClassification(421,10056 + function classifyLine(432,10301 + function getTextDomains(471,11094 + class PORManager 498,11756 + var $por_a;500,11803 + function PORManager(502,11822 + function addPOReader(507,11896 + function &getPOReader(getPOReader512,11992 + function getDomainNames(517,12081 + function &loadPORManager(loadPORManager523,12174 + function fileJoin(536,12436 + function lce_bindtextdomain(557,12839 + function lce_textdomain(614,14530 + function lce_gettext(620,14641 + function lce_dgettext(626,14767 + function lce(634,14966 + function lce_bindtextdomain(651,15488 + function lce_textdomain(656,15592 + function lce_gettext(661,15674 + function lce_dgettext(666,15755 + function lce(670,15855 + function lce_geteditcode(676,15898 + +php-src/ptest.php,135 +define("TEST"TEST1,0 +test 4,26 + var $member;8,71 + var $memassign=9,85 + var $memassign_space 10,110 + var $test12,176 +foo(16,200 + - perl-src/htlmify-cystic,1443 ++perl-src/htlmify-cystic,1197 +my @section_name;section_name12,236 +my @appendix_name;appendix_name13,254 +my @section_toc;section_toc15,274 +my @appendix_toc;appendix_toc16,291 +my $new_tag new_tag18,310 +my $appendix;appendix24,409 +my $section;section25,423 +my $subsection;subsection26,436 +my $subsubsection;subsubsection27,452 +my $this_file_toc this_file_toc29,472 +my %file_tocs;file_tocs30,496 +my @output_files output_files32,512 +my $file_index file_index33,535 +my $output_file;output_file35,556 +my $line;line37,574 +my $subsection_marker;subsection_marker161,3883 +my $new;new163,3907 - sub read_toc main::read_toc165,3917 ++sub read_toc 165,3917 + my $entry entry218,5621 + my $entry entry234,6077 + my $entry entry245,6351 + my $entry entry252,6536 + my $entry entry268,7010 + my $entry entry276,7204 + my $entry entry281,7328 + my $entry entry296,7698 - sub finish_subsubsections main::finish_subsubsections302,7805 - sub finish_subsections main::finish_subsections309,7987 - sub finish_sections main::finish_sections320,8310 - sub finish_appendices main::finish_appendices331,8599 - sub section_url_base main::section_url_base337,8724 - sub section_url_name main::section_url_name342,8922 - sub section_url main::section_url355,9284 ++sub finish_subsubsections 302,7805 ++sub finish_subsections 309,7987 ++sub finish_sections 320,8310 ++sub finish_appendices 331,8599 ++sub section_url_base 337,8724 ++sub section_url_name 342,8922 ++sub section_url 355,9284 + my $name name357,9336 - sub section_href main::section_href364,9452 - sub section_name main::section_name368,9551 - sub toc_line main::toc_line372,9655 - sub file_end main::file_end375,9750 ++sub section_href 364,9452 ++sub section_name 368,9551 ++sub toc_line 372,9655 ++sub file_end 375,9750 + - perl-src/yagrip.pl,258 - sub getopt main::getopt7,156 ++perl-src/yagrip.pl,233 ++sub getopt 7,156 + local($_,$flag,$opt,$f,$r,@temp)($_,$flag,$opt,$f,$r,@temp8,169 - sub usage main::usage38,856 ++sub usage 38,856 + local($prog,$_,@list)($prog,$_,@list39,868 + local($string,$flag,@string,@temp,@last)($string,$flag,@string,@temp,@last40,897 + - perl-src/kai-test.pl,244 - sub f1 main::f12,16 - sub main::f2 6,50 ++perl-src/kai-test.pl,203 ++sub f1 2,16 ++sub main::f2 f26,50 +package Foo;10,90 - sub f3 Foo::f312,104 - sub Bar::f4 16,138 ++sub f3 12,104 ++sub Bar::f4 f416,138 +package Bar;20,177 - sub f5 Bar::f522,191 ++sub f5 22,191 +package Foo::Bar;26,225 - sub f6 Foo::Bar::f628,244 ++sub f6 28,244 +package main;32,278 - sub f7 main::f734,293 ++sub f7 34,293 + +ps-src/rfc1245.ps,2478 +/FMversion 12,311 +/FrameDict 17,500 +/FMVERSION 47,1307 +/FMLOCAL 56,1494 +/FMDOCUMENT 73,1766 +/FMBEGINPAGE 95,2279 +/FMENDPAGE 109,2516 +/FMDEFINEFONT 115,2582 +/FMNORMALIZEGRAPHICS 126,2725 +/FMBEGINEPSF 142,2955 +/FMENDEPSF 153,3207 +/setmanualfeed 158,3283 +/max 163,3386 +/min 164,3426 +/inch 165,3466 +/pagedimen 166,3485 +/setpapername 172,3629 +/papersize 190,4214 +/manualpapersize 211,4789 +/desperatepapersize 230,5211 +/savematrix 239,5370 +/restorematrix 242,5425 +/dmatrix 245,5475 +/dpi 246,5495 +/freq 248,5583 +/sangle 249,5658 +/DiacriticEncoding 250,5717 +/.notdef 251,5738 +/.notdef 252,5801 +/.notdef 253,5864 +/.notdef 254,5927 +/.notdef 255,5990 +/numbersign 256,6051 +/parenright 257,6115 +/two 258,6184 +/less 259,6251 +/L 260,6320 +/bracketright 261,6389 +/i 262,6459 +/braceright 263,6529 +/Ntilde 264,6598 +/atilde 265,6668 +/iacute 266,6733 +/ocircumflex 267,6797 +/udieresis 268,6858 +/paragraph 269,6919 +/dieresis 270,6983 +/yen 271,7050 +/ordfeminine 272,7109 +/exclamdown 273,7171 +/guillemotleft 274,7230 +/Otilde 275,7296 +/quoteleft 276,7357 +/fraction 277,7420 +/periodcentered 278,7490 +/Acircumflex 279,7549 +/Icircumflex 280,7610 +/Uacute 281,7680 +/breve 282,7746 +/ReEncode 284,7814 +/graymode 300,8020 +/setpattern 310,8184 +/grayness 331,8725 +/normalize 394,9873 +/dnormalize 397,9942 +/lnormalize 400,10014 +/H 403,10104 +/Z 406,10147 +/X 409,10176 +/V 412,10219 +/N 415,10260 +/M 418,10286 +/E 419,10315 +/D 420,10336 +/O 421,10358 +/L 423,10394 +/Y 430,10489 +/R 439,10588 +/RR 450,10696 +/C 467,10959 +/U 473,11004 +/F 477,11039 +/T 481,11084 +/RF 484,11115 +/TF 488,11164 +/P 495,11219 +/PF 499,11270 +/S 506,11344 +/SF 510,11384 +/B 517,11446 +/BF 521,11505 +/W 538,11714 +/G 573,12382 +/A 582,12525 +/BEGINPRINTCODE 606,12918 +/ENDPRINTCODE 615,13131 +/gn 620,13259 +/cfs 631,13384 +/ic 636,13473 +/ms 658,14285 +/ip 668,14395 +/wh 678,14492 +/bl 684,14607 +/s1 690,14722 +/fl 691,14739 +/hx 698,14887 +/wbytes 709,15055 +/BEGINBITMAPBWc 713,15147 +/BEGINBITMAPGRAYc 716,15198 +/BEGINBITMAP2BITc 719,15251 +/COMMONBITMAPc 722,15304 +/BEGINBITMAPBW 739,15660 +/BEGINBITMAPGRAY 742,15709 +/BEGINBITMAP2BIT 745,15760 +/COMMONBITMAP 748,15811 +/Fmcc 765,16156 +/ngrayt 773,16371 +/nredt 774,16393 +/nbluet 775,16414 +/ngreent 776,16436 +/colorsetup 787,16603 +/fakecolorsetup 814,17370 +/BITMAPCOLOR 826,17636 +/BITMAPCOLORc 839,17926 +/BITMAPGRAY 855,18275 +/BITMAPGRAYc 858,18335 +/ENDBITMAP 861,18397 +/fillprocs 868,18497 + +prol-src/ordsets.prolog,525 +is_ordset(47,1310 +list_to_ord_set(63,1688 +ord_add_element(71,1867 +ord_del_element(85,2344 +ord_disjoint(100,2783 +ord_intersect(108,2953 +ord_intersection(126,3552 +ord_intersection3(130,3691 +ord_intersection(150,4531 +ord_intersection4(154,4703 +ord_intersection(176,5664 +ord_intersection2(181,5812 +ord_member(200,6318 +ord_seteq(216,6683 +ord_setproduct(225,6971 +ord_subset(240,7377 +ord_subtract(257,7861 +ord_symdiff(265,8054 +ord_union(288,8887 +ord_union4(303,9352 +ord_union(324,10171 +ord_union_all(329,10313 + +prol-src/natded.prolog,2319 +expandmng(100,2879 +normalize(116,3359 +fresh_vars(125,3716 +subst(138,4134 +normalize_fresh(159,4660 +reduce_subterm(171,5112 +reduce(185,5559 +free_var(196,5903 +free_for(209,6246 +compile_lex(231,6875 +consult_lex:-consult_lex248,7384 +lex(259,7754 +expandsyn(267,8068 +bas_syn(292,8897 +compile_empty:-compile_empty310,9376 +complete(328,10055 +add_active(340,10527 +parse(353,10949 +derived_analyses(364,11341 +build(378,11965 +buildact(392,12521 +mapsyn(412,13542 +add_edge(434,14278 +findcats(447,14758 +normalize_tree(465,15478 +normalize_trees(475,15856 +expandmng_tree(486,16248 +expandmng_trees(496,16614 +cat(511,17013 +subtree(644,21266 +hypothetical_mem(653,21565 +make_coor(667,22130 +start_up:-start_up688,23013 +tokenizeatom(710,23921 +tokenize(720,24348 +isoperator(752,25377 +isoptab(756,25431 +specialsymbol(765,25756 +sstab(771,25861 +parse_cgi(787,26347 +keyvalseq(792,26510 +andkeyvalseq(796,26609 +keyval(799,26688 +valseq(807,26920 +plusvalseq(810,27007 +val(816,27109 +argvals(824,27426 +commaargvals(828,27503 +atomval(833,27578 +atom(836,27640 +action(846,28004 +keyvalcgi(864,28649 +keyvalscgi(865,28670 +outsyn(868,28726 +act(876,29060 +actout(901,29906 +texttreelist(912,30089 +htmltreelist(918,30190 +fitchtreelist(924,30304 +pp_html_table_tree(938,30759 +pp_html_tree(949,31113 +pp_html_trees(988,32381 +pp_html_table_fitch_tree(999,32769 +pp_html_fitch_tree(1017,33672 +removeexp(1129,39002 +splitexp(1142,39490 +pp_exp(1155,39990 +map_word(1168,40249 +pp_exps(1180,40474 +pp_tree(1188,40777 +pp_trees(1216,41807 +pp_word_list(1225,42128 +pp_word(1231,42262 +pp_word_list_rest(1238,42569 +pp_cat(1248,42929 +pp_syn(1255,43196 +pp_syn_paren(1276,43899 +pp_paren(1293,44377 +pp_syn_back(1300,44661 +pp_bas_cat(1311,45001 +writecat(1322,45409 +writesubs(1351,46455 +writesups(1361,46757 +writelistsubs(1371,47090 +pp_lam(1380,47408 +pp_lam_bracket(1398,48022 +pp_lam_paren(1407,48338 +pp_rule(1429,49238 +member(1447,49866 +append_list(1451,49919 +append(1456,50010 +at_least_one_member(1460,50076 +numbervars(1464,50171 +reverse(1467,50209 +select(1471,50290 +select_last(1475,50357 +cat_atoms(1479,50436 +writelist(1485,50524 +write_lex_cat(1492,50676 +writebreaklex(1500,50988 +write_lex(1513,51265 +writebreak(1521,51541 +tt:-tt1531,51713 +mt:-mt1534,51784 +cmt:-cmt1537,51878 + +pyt-src/server.py,1438 +class Controls:Controls17,358 + def __init__(18,374 + def __repr__(24,590 + def __str__(34,871 +class Server:Server37,934 + def __init__(38,948 + def dump(73,2198 + def __repr__(125,3896 + def __str__(128,3945 +class User:User131,4014 + def __init__(132,4026 + def __repr__(172,5445 + def __str__(206,6883 +def flag2str(223,7212 +class LabeledEntry(232,7442 + def bind(234,7525 + def focus_set(236,7584 + def __init__(238,7629 +def ButtonBar(245,7909 +def helpwin(255,8280 +class ListEdit(267,8707 + def __init__(269,8808 + def handleList(303,10042 + def handleNew(306,10094 + def editItem(314,10426 + def deleteItem(320,10596 +def ConfirmQuit(326,10760 +class ControlEdit(375,12377 + def PostControls(376,12403 + def GatherControls(421,13530 +class ServerEdit(512,16264 + def __init__(513,16289 + def post(525,16629 + def gather(543,17191 + def nosave(547,17304 + def save(551,17408 + def refreshPort(556,17509 + def createWidgets(561,17663 + def edituser(631,20708 +class UserEdit(645,20921 + def __init__(646,20944 + def post(658,21283 + def gather(676,21841 + def nosave(680,21950 + def save(684,22052 + def createWidgets(689,22151 +class Configure(760,24879 + def __init__(761,24916 + def MakeDispose(772,25211 + def MakeSitelist(786,25706 + def editsite(794,25949 + def save(797,26022 + def nosave(807,26310 + +ruby-src/test.rb,637 +module ModuleExample1,0 + class ClassExample2,21 + def instance_method3,44 + def ClassExample.class_methodclass_method6,121 + def instance_method_exclamation!9,206 + def instance_method_question?12,310 + def instance_method_equals=instance_method_equals=15,408 + def `(18,502 + def +(21,592 + def [](24,640 + def []=([]=27,690 + def <<(30,752 + def ==(==33,802 + def <=(<=36,872 + def <=>(<=>39,943 + def ===(===42,990 + def module_instance_method46,1051 + def ModuleExample.module_class_methodmodule_class_method49,1131 + +ruby-src/test1.ru,935 +class A1,0 + def a(2,8 + def b(5,38 +module A9,57 + class B10,66 + ABC 11,76 + Def_ 12,88 + Xyzzy 13,106 + def foo!15,121 + def self._bar?(_bar?18,143 + def qux=(qux=22,194 + attr_reader :foofoo26,233 + attr_reader :read1 read127,254 + attr_reader :read1 , :read2;read227,254 + attr_reader :read1 , :read2; attr_writer :write1,write1=27,254 + attr_reader :read1 , :read2; attr_writer :write1, :write2write2=27,254 + attr_writer :bar,bar=28,316 + :baz,baz=29,338 + :moremore=30,360 + attr_accessor :teetee31,382 + attr_accessor :teetee=31,382 + alias_method :qux,qux32,405 + alias_method :xyz,xyz33,456 + :tee ; attr_reader :subtlesubtle34,479 + attr_reader(:foo1,foo135,523 + attr_reader(:foo1, :bar1,bar135,523 + :qux1)qux136,563 + alias_method ( :foo2,foo237,586 +A::Constant Constant42,655 + +tex-src/testenv.tex,52 +\newcommand{\nm}\nm4,77 +\section{blah}blah8,139 + +tex-src/gzip.texi,303 +@node Top,62,2139 +@node Copying,80,2652 +@node Overview,83,2705 +@node Sample,166,7272 +@node Invoking gzip,Invoking gzip210,8828 +@node Advanced usage,Advanced usage357,13495 +@node Environment,420,15207 +@node Tapes,437,15768 +@node Problems,460,16767 +@node Concept Index,Concept Index473,17287 + +tex-src/texinfo.tex,30627 +\def\texinfoversion{\texinfoversion26,1027 +\def\tie{\tie49,1518 +\def\gloggingall{\gloggingall72,2268 +\def\loggingall{\loggingall73,2337 +\def\onepageout#1{\onepageout99,3274 +\def\croppageout#1{\croppageout115,4024 +\def\cropmarks{\cropmarks142,5084 +\def\pagebody#1{\pagebody144,5131 +\def\ewtop{\ewtop157,5586 +\def\nstop{\nstop158,5650 +\def\ewbot{\ewbot160,5733 +\def\nsbot{\nsbot161,5797 +\def\parsearg #1{\parsearg170,6096 +\def\parseargx{\parseargx172,6174 +\def\parseargline{\parseargline182,6414 +\def\flushcr{\flushcr186,6535 +\newif\ifENV \ENVfalse \def\inENV{\inENV190,6734 +\def\ENVcheck{\ENVcheck191,6798 +\outer\def\begin{\begin198,7045 +\def\beginxxx #1{\beginxxx200,7083 +\def\end{\end208,7338 +\def\endxxx #1{\endxxx210,7366 +\def\errorE#1{\errorE216,7555 +\def\singlespace{\singlespace222,7749 +\def\@{\@232,7972 +\def\`{\`236,8072 +\def\'{\'237,8084 +\def\mylbrace {\mylbrace241,8132 +\def\myrbrace {\myrbrace242,8165 +\def\:{\:247,8279 +\def\*{\*250,8333 +\def\.{\.253,8409 +\def\w#1{\w258,8640 +\def\group{\group268,9123 + \def\Egroup{\Egroup273,9287 +\def\need{\need289,9729 +\def\needx#1{\needx300,10006 +\def\dots{\dots339,11392 +\def\page{\page343,11456 +\def\exdent{\exdent353,11783 +\def\exdentyyy #1{\exdentyyy354,11816 +\def\nofillexdent{\nofillexdent357,11960 +\def\nofillexdentyyy #1{\nofillexdentyyy358,12005 +\def\include{\include365,12189 +\def\includezzz #1{\includezzz366,12224 +\def\thisfile{\thisfile369,12275 +\def\center{\center373,12338 +\def\centerzzz #1{\centerzzz374,12371 +\def\sp{\sp380,12513 +\def\spxxx #1{\spxxx381,12538 +\def\comment{\comment387,12712 +\def\commentxxx #1{\commentxxx390,12809 +\def\ignoresections{\ignoresections396,12978 +\let\chapter=\relax=\relax397,13000 +\let\section=\relax=\relax406,13245 +\let\subsection=\relax=\relax409,13306 +\let\subsubsection=\relax=\relax410,13329 +\let\appendix=\relax=\relax411,13355 +\let\appendixsec=\relaxsec=\relax412,13376 +\let\appendixsection=\relaxsection=\relax413,13400 +\let\appendixsubsec=\relaxsubsec=\relax414,13428 +\let\appendixsubsection=\relaxsubsection=\relax415,13455 +\let\appendixsubsubsec=\relaxsubsubsec=\relax416,13486 +\let\appendixsubsubsection=\relaxsubsubsection=\relax417,13516 +\def\ignore{\ignore423,13618 +\long\def\ignorexxx #1\end ignore{\ignorexxx427,13758 +\def\direntry{\direntry429,13817 +\long\def\direntryxxx #1\end direntry{\direntryxxx430,13856 +\def\ifset{\ifset434,13966 +\def\ifsetxxx #1{\ifsetxxx436,14024 +\def\Eifset{\Eifset440,14151 +\def\ifsetfail{\ifsetfail441,14165 +\long\def\ifsetfailxxx #1\end ifset{\ifsetfailxxx442,14221 +\def\ifclear{\ifclear444,14282 +\def\ifclearxxx #1{\ifclearxxx446,14344 +\def\Eifclear{\Eifclear450,14475 +\def\ifclearfail{\ifclearfail451,14491 +\long\def\ifclearfailxxx #1\end ifclear{\ifclearfailxxx452,14551 +\def\set{\set456,14702 +\def\setxxx #1{\setxxx457,14729 +\def\clear{\clear460,14791 +\def\clearxxx #1{\clearxxx461,14822 +\def\iftex{\iftex466,14939 +\def\Eiftex{\Eiftex467,14952 +\def\ifinfo{\ifinfo468,14966 +\long\def\ifinfoxxx #1\end ifinfo{\ifinfoxxx469,15016 +\long\def\menu #1\end menu{\menu471,15075 +\def\asis#1{\asis472,15104 +\def\math#1{\math485,15647 +\def\node{\node487,15691 +\def\nodezzz#1{\nodezzz488,15729 +\def\nodexxx[#1,#2]{\nodexxx[489,15760 +\def\donoderef{\donoderef492,15822 +\def\unnumbnoderef{\unnumbnoderef496,15943 +\def\appendixnoderef{\appendixnoderef500,16074 +\expandafter\expandafter\expandafter\appendixsetref{setref501,16120 +\let\refill=\relaxill=\relax504,16209 +\def\setfilename{\setfilename509,16423 +\outer\def\bye{\bye518,16669 +\def\inforef #1{\inforef520,16725 +\def\inforefzzz #1,#2,#3,#4**{\inforefzzz521,16763 +\def\losespace #1{\losespace523,16860 +\def\sf{\sf532,17064 +\font\defbf=cmbx10 scaled \magstep1 %was 1314bf=cmbx10558,17859 +\font\deftt=cmtt10 scaled \magstep1tt=cmtt10559,17905 +\def\df{\df560,17941 +\def\resetmathfonts{\resetmathfonts635,20535 +\def\textfonts{\textfonts648,21124 +\def\chapfonts{\chapfonts653,21339 +\def\secfonts{\secfonts658,21555 +\def\subsecfonts{\subsecfonts663,21760 +\def\indexfonts{\indexfonts668,21977 +\def\smartitalicx{\smartitalicx691,22709 +\def\smartitalic#1{\smartitalic692,22785 +\let\cite=\smartitalic=\smartitalic698,22930 +\def\b#1{\b700,22954 +\def\t#1{\t703,22989 +\def\samp #1{\samp706,23141 +\def\key #1{\key707,23174 +\def\ctrl #1{\ctrl708,23235 +\def\tclose#1{\tclose716,23437 +\def\ {\720,23603 +\def\xkey{\xkey728,23872 +\def\kbdfoo#1#2#3\par{\kbdfoo729,23888 +\def\dmn#1{\dmn738,24189 +\def\kbd#1{\kbd740,24216 +\def\l#1{\l742,24273 +\def\r#1{\r744,24302 +\def\sc#1{\sc746,24370 +\def\ii#1{\ii747,24413 +\def\titlefont#1{\titlefont755,24646 +\def\titlepage{\titlepage761,24749 + \def\subtitlefont{\subtitlefont766,24976 + \def\authorfont{\authorfont768,25060 + \def\title{\title774,25270 + \def\titlezzz##1{\titlezzz775,25305 + \def\subtitle{\subtitle783,25620 + \def\subtitlezzz##1{\subtitlezzz784,25661 + \def\author{\author787,25779 + \def\authorzzz##1{\authorzzz788,25816 + \def\page{\page794,26107 +\def\Etitlepage{\Etitlepage804,26276 +\def\finishtitlepage{\finishtitlepage817,26664 +\def\evenheading{\evenheading846,27672 +\def\oddheading{\oddheading847,27715 +\def\everyheading{\everyheading848,27756 +\def\evenfooting{\evenfooting850,27802 +\def\oddfooting{\oddfooting851,27845 +\def\everyfooting{\everyfooting852,27886 +\def\headings #1 {\headings893,29578 +\def\HEADINGSoff{\HEADINGSoff895,29627 +\def\HEADINGSdouble{\HEADINGSdouble904,30054 +\def\HEADINGSsingle{\HEADINGSsingle914,30374 +\def\HEADINGSon{\HEADINGSon922,30595 +\def\HEADINGSafter{\HEADINGSafter924,30629 +\def\HEADINGSdoublex{\HEADINGSdoublex926,30724 +\def\HEADINGSsingleafter{\HEADINGSsingleafter933,30912 +\def\HEADINGSsinglex{\HEADINGSsinglex934,30973 +\def\today{\today943,31248 +\def\thistitle{\thistitle958,31793 +\def\settitle{\settitle959,31818 +\def\settitlezzz #1{\settitlezzz960,31855 +\def\internalBitem{\internalBitem992,32785 +\def\internalBitemx{\internalBitemx993,32835 +\def\internalBxitem "#1"{\internalBxitem995,32880 +\def\internalBxitemx "#1"{\internalBxitemx996,32960 +\def\internalBkitem{\internalBkitem998,33035 +\def\internalBkitemx{\internalBkitemx999,33087 +\def\kitemzzz #1{\kitemzzz1001,33134 +\def\xitemzzz #1{\xitemzzz1004,33236 +\def\itemzzz #1{\itemzzz1007,33339 +\def\item{\item1037,34410 +\def\itemx{\itemx1038,34461 +\def\kitem{\kitem1039,34514 +\def\kitemx{\kitemx1040,34567 +\def\xitem{\xitem1041,34622 +\def\xitemx{\xitemx1042,34675 +\def\description{\description1045,34785 +\def\table{\table1047,34835 +\def\ftable{\ftable1052,34979 +\def\Eftable{\Eftable1056,35125 +\def\vtable{\vtable1059,35194 +\def\Evtable{\Evtable1063,35340 +\def\dontindex #1{\dontindex1066,35409 +\def\fnitemindex #1{\fnitemindex1067,35429 +\def\vritemindex #1{\vritemindex1068,35474 +\def\tablez #1#2#3#4#5#6{\tablez1074,35623 +\def\Edescription{\Edescription1077,35681 +\def\itemfont{\itemfont1082,35883 +\def\Etable{\Etable1090,36109 +\def\itemize{\itemize1103,36433 +\def\itemizezzz #1{\itemizezzz1105,36469 +\def\itemizey #1#2{\itemizey1110,36564 +\def#2{1119,36810 +\def\itemcontents{\itemcontents1120,36851 +\def\bullet{\bullet1123,36899 +\def\minus{\minus1124,36926 +\def\frenchspacing{\frenchspacing1128,37034 +\def\splitoff#1#2\endmark{\splitoff1134,37259 +\def\enumerate{\enumerate1140,37489 +\def\enumeratezzz #1{\enumeratezzz1141,37528 +\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37581 + \def\thearg{\thearg1146,37728 + \ifx\thearg\empty \def\thearg{\thearg1147,37747 +\def\numericenumerate{\numericenumerate1184,39081 +\def\lowercaseenumerate{\lowercaseenumerate1190,39211 +\def\uppercaseenumerate{\uppercaseenumerate1203,39558 +\def\startenumeration#1{\startenumeration1219,40048 +\def\alphaenumerate{\alphaenumerate1227,40230 +\def\capsenumerate{\capsenumerate1228,40265 +\def\Ealphaenumerate{\Ealphaenumerate1229,40299 +\def\Ecapsenumerate{\Ecapsenumerate1230,40333 +\def\itemizeitem{\itemizeitem1234,40413 +\def\newindex #1{\newindex1259,41270 +\def\defindex{\defindex1268,41559 +\def\newcodeindex #1{\newcodeindex1272,41667 +\def\defcodeindex{\defcodeindex1279,41927 +\def\synindex #1 #2 {\synindex1283,42107 +\def\syncodeindex #1 #2 {\syncodeindex1292,42447 +\def\doindex#1{\doindex1309,43126 +\def\singleindexer #1{\singleindexer1310,43185 +\def\docodeindex#1{\docodeindex1313,43297 +\def\singlecodeindexer #1{\singlecodeindexer1314,43364 +\def\indexdummies{\indexdummies1316,43422 +\def\_{\_1317,43442 +\def\w{\w1318,43470 +\def\bf{\bf1319,43497 +\def\rm{\rm1320,43526 +\def\sl{\sl1321,43555 +\def\sf{\sf1322,43584 +\def\tt{\tt1323,43612 +\def\gtr{\gtr1324,43640 +\def\less{\less1325,43670 +\def\hat{\hat1326,43702 +\def\char{\char1327,43732 +\def\TeX{\TeX1328,43764 +\def\dots{\dots1329,43794 +\def\copyright{\copyright1330,43827 +\def\tclose##1{\tclose1331,43870 +\def\code##1{\code1332,43915 +\def\samp##1{\samp1333,43956 +\def\t##1{\t1334,43997 +\def\r##1{\r1335,44032 +\def\i##1{\i1336,44067 +\def\b##1{\b1337,44102 +\def\cite##1{\cite1338,44137 +\def\key##1{\key1339,44178 +\def\file##1{\file1340,44217 +\def\var##1{\var1341,44258 +\def\kbd##1{\kbd1342,44297 +\def\indexdummyfont#1{\indexdummyfont1347,44453 +\def\indexdummytex{\indexdummytex1348,44479 +\def\indexdummydots{\indexdummydots1349,44503 +\def\indexnofonts{\indexnofonts1351,44529 +\let\w=\indexdummyfontdummyfont1352,44549 +\let\t=\indexdummyfontdummyfont1353,44572 +\let\r=\indexdummyfontdummyfont1354,44595 +\let\i=\indexdummyfontdummyfont1355,44618 +\let\b=\indexdummyfontdummyfont1356,44641 +\let\emph=\indexdummyfontdummyfont1357,44664 +\let\strong=\indexdummyfontdummyfont1358,44690 +\let\cite=\indexdummyfont=\indexdummyfont1359,44718 +\let\sc=\indexdummyfontdummyfont1360,44744 +\let\tclose=\indexdummyfontdummyfont1364,44916 +\let\code=\indexdummyfontdummyfont1365,44944 +\let\file=\indexdummyfontdummyfont1366,44970 +\let\samp=\indexdummyfontdummyfont1367,44996 +\let\kbd=\indexdummyfontdummyfont1368,45022 +\let\key=\indexdummyfontdummyfont1369,45047 +\let\var=\indexdummyfontdummyfont1370,45072 +\let\TeX=\indexdummytexdummytex1371,45097 +\let\dots=\indexdummydotsdummydots1372,45121 +\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45373 +\def\doind #1#2{\doind1384,45429 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45472 +\def\rawbackslashxx{\rawbackslashxx1389,45612 +{\indexnofontsnofonts1394,45874 +\def\dosubind #1#2#3{\dosubind1405,46185 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46233 +\def\rawbackslashxx{\rawbackslashxx1410,46337 +{\indexnofontsnofonts1414,46491 +\def\findex {\findex1443,47422 +\def\kindex {\kindex1444,47445 +\def\cindex {\cindex1445,47468 +\def\vindex {\vindex1446,47491 +\def\tindex {\tindex1447,47514 +\def\pindex {\pindex1448,47537 +\def\cindexsub {\cindexsub1450,47561 +\def\printindex{\printindex1462,47888 +\def\doprintindex#1{\doprintindex1464,47929 + \def\indexbackslash{\indexbackslash1481,48414 + \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48453 +\def\initial #1{\initial1517,49525 +\def\entry #1#2{\entry1523,49732 + \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50379 +\def\indexdotfill{\indexdotfill1549,50707 +\def\primary #1{\primary1552,50813 +\def\secondary #1#2{\secondary1556,50895 +\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50977 +\newbox\partialpageialpage1566,51150 +\def\begindoublecolumns{\begindoublecolumns1572,51308 + \output={\global\setbox\partialpage=ialpage=1573,51344 +\def\enddoublecolumns{\enddoublecolumns1577,51532 +\def\doublecolumnout{\doublecolumnout1580,51617 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51686 +\def\pagesofar{\pagesofar1584,51864 +\def\balancecolumns{\balancecolumns1588,52101 + \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52272 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52533 +\newcount \appendixno \appendixno = `\@no1627,53438 +\def\appendixletter{\appendixletter1628,53479 +\def\opencontents{\opencontents1632,53582 +\def\thischapter{\thischapter1637,53763 +\def\seccheck#1{\seccheck1638,53801 +\def\chapternofonts{\chapternofonts1643,53905 +\def\result{\result1646,53980 +\def\equiv{\equiv1647,54015 +\def\expansion{\expansion1648,54048 +\def\print{\print1649,54089 +\def\TeX{\TeX1650,54122 +\def\dots{\dots1651,54151 +\def\copyright{\copyright1652,54182 +\def\tt{\tt1653,54223 +\def\bf{\bf1654,54250 +\def\w{\w1655,54278 +\def\less{\less1656,54303 +\def\gtr{\gtr1657,54334 +\def\hat{\hat1658,54363 +\def\char{\char1659,54392 +\def\tclose##1{\tclose1660,54423 +\def\code##1{\code1661,54467 +\def\samp##1{\samp1662,54507 +\def\r##1{\r1663,54547 +\def\b##1{\b1664,54581 +\def\key##1{\key1665,54615 +\def\file##1{\file1666,54653 +\def\kbd##1{\kbd1667,54693 +\def\i##1{\i1669,54801 +\def\cite##1{\cite1670,54835 +\def\var##1{\var1671,54875 +\def\emph##1{\emph1672,54913 +\def\dfn##1{\dfn1673,54953 +\def\thischaptername{\thischaptername1676,54994 +\outer\def\chapter{\chapter1677,55033 +\def\chapterzzz #1{\chapterzzz1678,55074 +{\chapternofonts%nofonts%1687,55470 +\global\let\section = \numberedsec=1692,55623 +\global\let\subsection = \numberedsubsec=1693,55658 +\global\let\subsubsection = \numberedsubsubsec=1694,55699 +\outer\def\appendix{\appendix1697,55750 +\def\appendixzzz #1{\appendixzzz1698,55793 +\global\advance \appendixno by 1 \message{no1700,55870 +\chapmacro {#1}{Appendix \appendixletter}letter1701,55939 +\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56032 +{\chapternofonts%nofonts%1705,56104 + {#1}{Appendix \appendixletter}letter1707,56160 +\appendixnoderef %noderef1710,56260 +\global\let\section = \appendixsec=1711,56279 +\global\let\subsection = \appendixsubsec=1712,56314 +\global\let\subsubsection = \appendixsubsubsec=1713,56355 +\outer\def\top{\top1716,56406 +\outer\def\unnumbered{\unnumbered1717,56446 +\def\unnumberedzzz #1{\unnumberedzzz1718,56493 +{\chapternofonts%nofonts%1722,56656 +\global\let\section = \unnumberedsec=1727,56806 +\global\let\subsection = \unnumberedsubsec=1728,56843 +\global\let\subsubsection = \unnumberedsubsubsec=1729,56886 +\outer\def\numberedsec{\numberedsec1732,56939 +\def\seczzz #1{\seczzz1733,56980 +{\chapternofonts%nofonts%1736,57136 +\outer\def\appendixsection{\appendixsection1745,57322 +\outer\def\appendixsec{\appendixsec1746,57379 +\def\appendixsectionzzz #1{\appendixsectionzzz1747,57432 +\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57544 +{\chapternofonts%nofonts%1750,57612 +{#1}{\appendixletter}letter1752,57668 +\appendixnoderef %noderef1755,57768 +\outer\def\unnumberedsec{\unnumberedsec1759,57808 +\def\unnumberedseczzz #1{\unnumberedseczzz1760,57861 +{\chapternofonts%nofonts%1762,57956 +\outer\def\numberedsubsec{\numberedsubsec1770,58124 +\def\numberedsubseczzz #1{\numberedsubseczzz1771,58179 +{\chapternofonts%nofonts%1774,58358 +\outer\def\appendixsubsec{\appendixsubsec1783,58562 +\def\appendixsubseczzz #1{\appendixsubseczzz1784,58617 +\subsecheading {#1}{\appendixletter}letter1786,58739 +{\chapternofonts%nofonts%1787,58804 +{#1}{\appendixletter}letter1789,58863 +\appendixnoderef %noderef1792,58978 +\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59018 +\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59077 +{\chapternofonts%nofonts%1799,59178 +\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59349 +\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59410 +{\chapternofonts%nofonts%1812,59607 +\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59840 +\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59901 + {\appendixletter}letter1827,60040 +{\chapternofonts%nofonts%1828,60106 + {\appendixletter}letter1830,60171 +\appendixnoderef %noderef1834,60305 +\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60345 +\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60410 +{\chapternofonts%nofonts%1841,60517 +\def\infotop{\infotop1851,60846 +\def\infounnumbered{\infounnumbered1852,60884 +\def\infounnumberedsec{\infounnumberedsec1853,60929 +\def\infounnumberedsubsec{\infounnumberedsubsec1854,60980 +\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61037 +\def\infoappendix{\infoappendix1857,61101 +\def\infoappendixsec{\infoappendixsec1858,61142 +\def\infoappendixsubsec{\infoappendixsubsec1859,61189 +\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61242 +\def\infochapter{\infochapter1862,61302 +\def\infosection{\infosection1863,61341 +\def\infosubsection{\infosubsection1864,61380 +\def\infosubsubsection{\infosubsubsection1865,61425 +\global\let\section = \numberedsec=1870,61662 +\global\let\subsection = \numberedsubsec=1871,61697 +\global\let\subsubsection = \numberedsubsubsec=1872,61738 +\def\majorheading{\majorheading1886,62245 +\def\majorheadingzzz #1{\majorheadingzzz1887,62290 +\def\chapheading{\chapheading1893,62523 +\def\chapheadingzzz #1{\chapheadingzzz1894,62566 +\def\heading{\heading1899,62761 +\def\subheading{\subheading1901,62798 +\def\subsubheading{\subsubheading1903,62841 +\def\dobreak#1#2{\dobreak1910,63118 +\def\setchapterstyle #1 {\setchapterstyle1912,63196 +\def\chapbreak{\chapbreak1919,63451 +\def\chappager{\chappager1920,63501 +\def\chapoddpage{\chapoddpage1921,63539 +\def\setchapternewpage #1 {\setchapternewpage1923,63618 +\def\CHAPPAGoff{\CHAPPAGoff1925,63675 +\def\CHAPPAGon{\CHAPPAGon1929,63769 +\global\def\HEADINGSon{\HEADINGSon1932,63860 +\def\CHAPPAGodd{\CHAPPAGodd1934,63902 +\global\def\HEADINGSon{\HEADINGSon1937,63998 +\def\CHAPFplain{\CHAPFplain1941,64052 +\def\chfplain #1#2{\chfplain1945,64144 +\def\unnchfplain #1{\unnchfplain1956,64367 +\def\unnchfopen #1{\unnchfopen1964,64596 +\def\chfopen #1#2{\chfopen1970,64804 +\def\CHAPFopen{\CHAPFopen1975,64948 +\def\subsecheadingbreak{\subsecheadingbreak1982,65166 +\def\secheadingbreak{\secheadingbreak1985,65295 +\def\secheading #1#2#3{\secheading1993,65577 +\def\plainsecheading #1{\plainsecheading1994,65633 +\def\secheadingi #1{\secheadingi1995,65676 +\def\subsecheading #1#2#3#4{\subsecheading2006,66044 +\def\subsecheadingi #1{\subsecheadingi2007,66111 +\def\subsubsecfonts{\subsubsecfonts2014,66408 +\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66531 +\def\subsubsecheadingi #1{\subsubsecheadingi2018,66609 +\def\startcontents#1{\startcontents2032,67081 + \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67354 +\outer\def\contents{\contents2049,67713 +\outer\def\summarycontents{\summarycontents2057,67857 + \def\secentry ##1##2##3##4{\secentry2067,68228 + \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68263 + \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68298 + \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68339 + \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68377 + \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68424 +\def\chapentry#1#2#3{\chapentry2085,68858 +\def\shortchapentry#1#2#3{\shortchapentry2088,68975 + {#2\labelspace #1}space2091,69085 +\def\unnumbchapentry#1#2{\unnumbchapentry2094,69139 +\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69186 +\def\secentry#1#2#3#4{\secentry2102,69350 +\def\unnumbsecentry#1#2{\unnumbsecentry2103,69409 +\def\subsecentry#1#2#3#4#5{\subsecentry2106,69470 +\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69540 +\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69614 + \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69648 +\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69699 +\def\dochapentry#1#2{\dochapentry2123,70073 +\def\dosecentry#1#2{\dosecentry2138,70678 +\def\dosubsecentry#1#2{\dosubsecentry2145,70856 +\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71041 +\def\labelspace{\labelspace2160,71292 +\def\dopageno#1{\dopageno2162,71327 +\def\doshortpageno#1{\doshortpageno2163,71353 +\def\chapentryfonts{\chapentryfonts2165,71385 +\def\secentryfonts{\secentryfonts2166,71420 +\def\point{\point2192,72379 +\def\result{\result2194,72400 +\def\expansion{\expansion2195,72473 +\def\print{\print2196,72544 +\def\equiv{\equiv2198,72611 +\def\error{\error2218,73384 +\def\tex{\tex2224,73613 +\def\@{\@2242,73996 +\gdef\sepspaces{\def {\ }}}\2265,74728 +\def\aboveenvbreak{\aboveenvbreak2268,74810 +\def\afterenvbreak{\afterenvbreak2272,74976 +\def\ctl{\ctl2286,75487 +\def\ctr{\ctr2287,75559 +\def\cbl{\cbl2288,75598 +\def\cbr{\cbr2289,75638 +\def\carttop{\carttop2290,75677 +\def\cartbot{\cartbot2293,75785 +\long\def\cartouche{\cartouche2299,75925 +\def\Ecartouche{\Ecartouche2326,76713 +\def\lisp{\lisp2338,76848 +\def\Elisp{\Elisp2348,77195 +\def\next##1{\next2360,77521 +\def\Eexample{\Eexample2364,77563 +\def\Esmallexample{\Esmallexample2367,77610 +\def\smalllispx{\smalllispx2373,77788 +\def\Esmalllisp{\Esmalllisp2383,78142 +\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78498 +\def\next##1{\next2397,78555 +\def\display{\display2401,78635 +\def\Edisplay{\Edisplay2410,78954 +\def\next##1{\next2422,79265 +\def\format{\format2426,79368 +\def\Eformat{\Eformat2434,79664 +\def\next##1{\next2437,79753 +\def\flushleft{\flushleft2441,79805 +\def\Eflushleft{\Eflushleft2451,80176 +\def\next##1{\next2454,80269 +\def\flushright{\flushright2456,80291 +\def\Eflushright{\Eflushright2466,80663 +\def\next##1{\next2470,80794 +\def\quotation{\quotation2474,80852 +\def\Equotation{\Equotation2480,81044 +\def\setdeffont #1 {\setdeffont2493,81442 +\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81488 +\newskip\defargsindent \defargsindent=50ptargsindent2496,81531 +\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81574 +\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81617 +\def\activeparens{\activeparens2503,81815 +\def\opnr{\opnr2529,83027 +\def\lbrb{\lbrb2530,83092 +\def\defname #1#2{\defname2536,83293 +\advance\dimen2 by -\defbodyindentbodyindent2540,83411 +\advance\dimen3 by -\defbodyindentbodyindent2542,83465 +\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83519 +\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83661 +\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83736 +\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84105 +\advance\leftskip by -\defbodyindentbodyindent2557,84239 +\exdentamount=\defbodyindentbodyindent2558,84276 +\def\defparsebody #1#2#3{\defparsebody2568,84635 +\def#1{2572,84819 +\def#2{2573,84855 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84927 +\exdentamount=\defbodyindentbodyindent2576,85001 +\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85105 +\def#1{2585,85266 +\def#2##1 {2586,85302 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85385 +\exdentamount=\defbodyindentbodyindent2589,85459 +\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85544 +\def#1{2596,85705 +\def#2##1 ##2 {2597,85741 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85841 +\exdentamount=\defbodyindentbodyindent2601,85915 +\def\defvarparsebody #1#2#3{\defvarparsebody2608,86186 +\def#1{2612,86373 +\def#2{2613,86409 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86468 +\exdentamount=\defbodyindentbodyindent2616,86542 +\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86633 +\def#1{2625,86792 +\def#2##1 {2626,86828 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86898 +\exdentamount=\defbodyindentbodyindent2629,86972 +\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87044 +\def#1{2636,87208 +\def#2##1 ##2 {2637,87244 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87331 +\exdentamount=\defbodyindentbodyindent2641,87405 +\def\defunargs #1{\defunargs2664,88165 +\def\deftypefunargs #1{\deftypefunargs2676,88547 +\def\deffn{\deffn2690,88929 +\def\deffnheader #1#2#3{\deffnheader2692,88986 +\begingroup\defname {name2693,89034 +\def\defun{\defun2699,89179 +\def\defunheader #1#2{\defunheader2701,89232 +\begingroup\defname {name2702,89307 +\defunargs {unargs2703,89343 +\def\deftypefun{\deftypefun2709,89491 +\def\deftypefunheader #1#2{\deftypefunheader2712,89613 +\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89722 +\begingroup\defname {name2716,89814 +\deftypefunargs {typefunargs2717,89860 +\def\deftypefn{\deftypefn2723,90031 +\def\deftypefnheader #1#2#3{\deftypefnheader2726,90180 +\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90316 +\begingroup\defname {name2730,90409 +\deftypefunargs {typefunargs2731,90449 +\def\defmac{\defmac2737,90570 +\def\defmacheader #1#2{\defmacheader2739,90627 +\begingroup\defname {name2740,90703 +\defunargs {unargs2741,90736 +\def\defspec{\defspec2747,90860 +\def\defspecheader #1#2{\defspecheader2749,90921 +\begingroup\defname {name2750,90998 +\defunargs {unargs2751,91038 +\def\deffnx #1 {\deffnx2758,91233 +\def\defunx #1 {\defunx2759,91290 +\def\defmacx #1 {\defmacx2760,91347 +\def\defspecx #1 {\defspecx2761,91406 +\def\deftypefnx #1 {\deftypefnx2762,91467 +\def\deftypeunx #1 {\deftypeunx2763,91532 +\def\defop #1 {\defop2769,91678 +\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91713 +\def\defopheader #1#2#3{\defopheader2772,91767 +\begingroup\defname {name2774,91856 +\defunargs {unargs2775,91902 +\def\defmethod{\defmethod2780,91963 +\def\defmethodheader #1#2#3{\defmethodheader2782,92036 +\begingroup\defname {name2784,92124 +\defunargs {unargs2785,92164 +\def\defcv #1 {\defcv2790,92238 +\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92273 +\def\defcvarheader #1#2#3{\defcvarheader2793,92332 +\begingroup\defname {name2795,92418 +\defvarargs {varargs2796,92464 +\def\defivar{\defivar2801,92537 +\def\defivarheader #1#2#3{\defivarheader2803,92600 +\begingroup\defname {name2805,92686 +\defvarargs {varargs2806,92737 +\def\defopx #1 {\defopx2812,92886 +\def\defmethodx #1 {\defmethodx2813,92943 +\def\defcvx #1 {\defcvx2814,93008 +\def\defivarx #1 {\defivarx2815,93065 +\def\defvarargs #1{\defvarargs2822,93336 +\def\defvr{\defvr2828,93480 +\def\defvrheader #1#2#3{\defvrheader2830,93535 +\begingroup\defname {name2831,93583 +\def\defvar{\defvar2835,93668 +\def\defvarheader #1#2{\defvarheader2837,93728 +\begingroup\defname {name2838,93799 +\defvarargs {varargs2839,93835 +\def\defopt{\defopt2844,93901 +\def\defoptheader #1#2{\defoptheader2846,93961 +\begingroup\defname {name2847,94032 +\defvarargs {varargs2848,94071 +\def\deftypevar{\deftypevar2853,94128 +\def\deftypevarheader #1#2{\deftypevarheader2856,94244 +\begingroup\defname {name2858,94327 +\def\deftypevr{\deftypevr2865,94501 +\def\deftypevrheader #1#2#3{\deftypevrheader2867,94572 +\begingroup\defname {name2868,94624 +\def\defvrx #1 {\defvrx2876,94861 +\def\defvarx #1 {\defvarx2877,94918 +\def\defoptx #1 {\defoptx2878,94977 +\def\deftypevarx #1 {\deftypevarx2879,95036 +\def\deftypevrx #1 {\deftypevrx2880,95103 +\def\deftpargs #1{\deftpargs2885,95252 +\def\deftp{\deftp2889,95332 +\def\deftpheader #1#2#3{\deftpheader2891,95387 +\begingroup\defname {name2892,95435 +\def\deftpx #1 {\deftpx2897,95594 +\def\setref#1{\setref2908,95915 +\def\unnumbsetref#1{\unnumbsetref2913,96029 +\def\appendixsetref#1{\appendixsetref2918,96136 +\def\pxref#1{\pxref2929,96547 +\def\xref#1{\xref2930,96583 +\def\ref#1{\ref2931,96618 +\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96648 +\def\printedmanual{\printedmanual2933,96691 +\def\printednodename{\printednodename2934,96729 +\def\printednodename{\printednodename2939,96854 +section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97487 +\refx{x2957,97565 +\def\dosetq #1#2{\dosetq2965,97785 +\def\internalsetq #1#2{\internalsetq2973,98043 +\def\Ypagenumber{\Ypagenumber2977,98144 +\def\Ytitle{\Ytitle2979,98170 +\def\Ynothing{\Ynothing2981,98197 +\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98214 +\def\Yappendixletterandtype{\Yappendixletterandtype2992,98530 +\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98560 +\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98615 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98719 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98790 + \def\linenumber{\linenumber3009,99129 +\def\refx#1#2{\refx3015,99313 +\def\xrdef #1#2{\xrdef3037,99939 +\def\readauxfile{\readauxfile3040,100024 +\def\supereject{\supereject3110,101805 +\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102490 +\def\openindices{\openindices3139,102676 +\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102901 +\parindent = \defaultparindentaultparindent3152,102953 +\def\smallbook{\smallbook3175,103677 +\global\def\Esmallexample{\Esmallexample3192,104104 +\def\afourpaper{\afourpaper3196,104195 +\def\finalout{\finalout3224,105003 +\def\normaldoublequote{\normaldoublequote3235,105264 +\def\normaltilde{\normaltilde3236,105290 +\def\normalcaret{\normalcaret3237,105310 +\def\normalunderscore{\normalunderscore3238,105330 +\def\normalverticalbar{\normalverticalbar3239,105355 +\def\normalless{\normalless3240,105381 +\def\normalgreater{\normalgreater3241,105400 +\def\normalplus{\normalplus3242,105422 +\def\ifusingtt#1#2{\ifusingtt3253,105914 +\def\activedoublequote{\activedoublequote3261,106242 +\def~{~3264,106328 +\def^{^3267,106389 +\def_{_3270,106428 +\def\_{\_3272,106502 +\def\lvvmode{\lvvmode3279,106839 +\def|{|3282,106889 +\def<{<3285,106952 +\def>{>3288,107009 +\def+{+3290,107047 +\def\turnoffactive{\turnoffactive3296,107208 +\global\def={=3307,107494 +\def\normalbackslash{\normalbackslash3321,107876 + +c-src/c.c,76 +T f(1,0 +}T i;2,14 +void bar(5,69 +int foobar(6,94 +interface_locate(9,131 + +c.c,2136 +void (*fa)fa131, +void 132, +my_printf 135, +void fatala 138, +void fatalb 139, +max 141, +struct bar 143, + char z;144, + struct foo f;145, +__attribute__ ((always_inline)) max 147, +extern int old_var 149, +struct foo150, + char a;152, + int x[x153, +char stack[stack155, +struct S 156, +struct S { short f[f156, + int *__ip;__ip159, + union wait *__up;__up160, +} wait_status_ptr_t 161, +Some_Class A 162, +typedef T1 T3 163, +T3 z 164, +typedef int more_aligned_int 165, +struct S __attribute__ ((vector_size (16))) foo;166, +int foo 167, +char *__attribute__((aligned(8))) *f;f168, +int i 169, +extern void foobar 170, +typedef struct cacheLRUEntry_s172, + U16 next;174, + U16 prev;175, +__attribute__ ((packed)) cacheLRUEntry_t;177, +struct foo 178, + int x;179, + char a,180, + char a, b,180, + char a, b, c,180, + char a, b, c, d;180, + f1 183, +void f2 184, +__attribute__((noreturn)) void d0 185, + __attribute__((format(printf, 1, 2))) d1 186, + d2 187, +int x 188, +struct foo 189, +struct foo { int x[x189, +short array[array190, +int f193, +DEAFUN 196, +XDEFUN 203, +DEFUN ("x-get-selection-internal", Fx_get_selection_internal,x-get-selection-internal206, + Fx_get_selection_internal,x-get-selection-internal212, + Fy_get_selection_internal,y-get-selection-internal216, +defun_func1(218, +DEFUN_func2(220, +typedef int bool;222, +bool funcboo 223, +struct my_struct 226, +typedef struct my_struct my_typedef;228, +int bla 229, +a(234, +int func1237, +static struct cca_control init_control 239, +static tpcmd rbtp 240, +static byte ring1 241, +static byte ring2 242, +request request 243, +int func2 246, + aaa;249, + bbb;251, +struct sss1 252, +struct sss2253, + struct ss3255, +struct a b;259, +struct aa *b;b260, + **b;b262, +caccacacca 263, +a 267, + typedef struct aa 269, + typedef struct aa {} aaa;269, +static void inita 271, +node *lasta lasta272, +b 273, + typedef int bb;275, +static void initb 277, +node *lastb lastb278, +typedef enum { REG_ENOSYS 279, +typedef enum { REG_ENOSYS = -1, aa 279, +typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;279, + +c-src/a/b/b.c,18 +#define this 1,0 + +../c/c.web,20 +#define questo 34, + +y-src/parse.y,1061 +#define obstack_chunk_alloc 46,1116 +#define obstack_chunk_free 47,1154 +int yylex 57,1322 +void yyerror 59,1352 +void yyerror 61,1381 +VOIDSTAR parse_hash;63,1405 +extern VOIDSTAR hash_find(64,1426 +unsigned char fnin[fnin67,1524 +#define YYSTYPE 71,1622 +typedef struct node *YYSTYPE;YYSTYPE72,1653 +YYSTYPE parse_return;73,1683 +YYSTYPE make_list 75,1721 +YYSTYPE make_list 77,1765 +char *instr;instr80,1795 +int parse_error 81,1808 +extern struct obstack tmp_mem;82,1829 +line:line86,1867 +exp:exp94,1980 +exp_list:exp_list262,5647 +range_exp:range_exp268,5745 +range_exp_list:range_exp_list272,5775 +cell:cell278,5893 +yyerror FUN1(285,5940 +make_list FUN2(292,6020 +#define ERROR 303,6220 +extern struct node *yylval;yylval305,6238 +unsigned char parse_cell_or_range 308,6283 +unsigned char parse_cell_or_range 310,6347 +yylex FUN0(314,6397 +parse_cell_or_range FUN2(586,11763 +#define CK_ABS_R(670,13205 +#define CK_REL_R(674,13284 +#define CK_ABS_C(679,13413 +#define CK_REL_C(683,13492 +#define MAYBEREL(688,13621 +str_to_col FUN1(846,16822 + +y-src/parse.c,520 +#define YYBISON 4,64 +# define NE 6,114 +# define LE 7,130 +# define GE 8,146 +# define NEG 9,162 +# define L_CELL 10,179 +# define L_RANGE 11,199 +# define L_VAR 12,220 +# define L_CONST 13,239 +# define L_FN0 14,260 +# define L_FN1 15,279 +# define L_FN2 16,298 +# define L_FN3 17,317 +# define L_FN4 18,336 +# define L_FNN 19,355 +# define L_FN1R 20,374 +# define L_FN2R 21,394 +# define L_FN3R 22,414 +# define L_FN4R 23,434 +# define L_FNNR 24,454 +# define L_LE 25,474 +# define L_NE 26,492 +# define L_GE 27,510 + +parse.y,1464 +#define obstack_chunk_alloc 46, +#define obstack_chunk_free 47, +int yylex 57, +void yyerror 59, +void yyerror 61, +VOIDSTAR parse_hash;63, +extern VOIDSTAR hash_find(64, +unsigned char fnin[fnin67, +#define YYSTYPE 71, +typedef struct node *YYSTYPE;YYSTYPE72, +YYSTYPE parse_return;73, +YYSTYPE make_list 75, +YYSTYPE make_list 77, +char *instr;instr80, +int parse_error 81, +extern struct obstack tmp_mem;82, +#define YYSTYPE 85, +# define YYDEBUG 88, +#define YYFINAL 93, +#define YYFLAG 94, +#define YYNTBASE 95, +#define YYTRANSLATE(98, +static const char yytranslate[yytranslate101, +static const short yyprhs[yyprhs134, +static const short yyrhs[yyrhs142, +static const short yyrline[yyrline171, +static const char *const yytname[yytname185, +static const short yyr1[yyr1197, +static const short yyr2[yyr2207, +static const short yydefact[yydefact219, +static const short yydefgoto[yydefgoto237, +static const short yypact[yypact242, +static const short yypgoto[yypgoto260, +#define YYLAST 266, +static const short yytable[yytable269, +static const short yycheck[yycheck330, +yyerror FUN1(285, +make_list FUN2(292, +#define ERROR 303, +extern struct node *yylval;yylval305, +unsigned char parse_cell_or_range 308, +unsigned char parse_cell_or_range 310, +yylex FUN0(314, +parse_cell_or_range FUN2(586, +#define CK_ABS_R(670, +#define CK_REL_R(674, +#define CK_ABS_C(679, +#define CK_REL_C(683, +#define MAYBEREL(688, +str_to_col FUN1(846, + +/usr/share/bison/bison.simple,2238 +# define YYSTD(40, +# define YYSTD(42, +# define YYSTACK_ALLOC 50, +# define YYSIZE_T 51, +# define YYSTACK_ALLOC 55, +# define YYSIZE_T 56, +# define YYSTACK_ALLOC 59, +# define YYSTACK_FREE(67, +# define YYSIZE_T 71, +# define YYSIZE_T 75, +# define YYSTACK_ALLOC 78, +# define YYSTACK_FREE 79, +union yyalloc83, + short yyss;85, + YYSTYPE yyvs;86, + YYLTYPE yyls;88, +# define YYSTACK_GAP_MAX 93, +# define YYSTACK_BYTES(98, +# define YYSTACK_BYTES(102, +# define YYSTACK_RELOCATE(112, +# define YYSIZE_T 128, +# define YYSIZE_T 131, +# define YYSIZE_T 136, +# define YYSIZE_T 140, +# define YYSIZE_T 145, +#define yyerrok 148, +#define yyclearin 149, +#define YYEMPTY 150, +#define YYEOF 151, +#define YYACCEPT 152, +#define YYABORT 153, +#define YYERROR 154, +#define YYFAIL 158, +#define YYRECOVERING(159, +#define YYBACKUP(160, +#define YYTERROR 177, +#define YYERRCODE 178, +# define YYLLOC_DEFAULT(189, +# define YYLEX 200, +# define YYLEX 202, +# define YYLEX 206, +# define YYLEX 208, +# define YYLEX 212, +# define YYFPRINTF 225, +# define YYDPRINTF(228, +int yydebug;237, +# define YYDPRINTF(239, +# define YYINITDEPTH 244, +# undef YYMAXDEPTH255, +# define YYMAXDEPTH 259, +# define yymemcpy 264, +yymemcpy 271, +# define yystrlen 293, +yystrlen 298, +# define yystpcpy 316, +yystpcpy 322, +# define YYPARSE_PARAM_ARG 351, +# define YYPARSE_PARAM_DECL352, +# define YYPARSE_PARAM_ARG 354, +# define YYPARSE_PARAM_DECL 355, +# define YYPARSE_PARAM_ARG358, +# define YYPARSE_PARAM_DECL359, +int yyparse 365, +int yyparse 367, +#define YY_DECL_NON_LSP_VARIABLES 374, +# define YY_DECL_VARIABLES 385, +# define YY_DECL_VARIABLES 391, +yyparse 403, +# define YYPOPSTACK 445, +# define YYPOPSTACK 447, +# undef YYSTACK_RELOCATE548, + *++yyvsp yyvsp746, + *++yylsp yylsp748, + yyn 755, + yystate 757, + yystate 761, + goto yynewstate;763, + goto yyerrlab1;823, + yyerrstatus 846, + goto yyerrhandle;848, + yyn 861, + yystate 875, + yyn 895, + yyn 903, + YYDPRINTF 917, + *++yyvsp yyvsp919, + *++yylsp yylsp921, + yystate 924, + goto yynewstate;925, + yyresult 932, + goto yyreturn;933, + yyresult 939, + goto yyreturn;940, + yyerror 946, + yyresult 947, + +y-src/atest.y,9 +exp 2,3 + +y-src/cccp.c,303 +#define YYBISON 4,63 +# define INT 6,113 +# define CHAR 7,130 +# define NAME 8,148 +# define ERROR 9,166 +# define OR 10,185 +# define AND 11,201 +# define EQUAL 12,218 +# define NOTEQUAL 13,237 +# define LEQ 14,259 +# define GEQ 15,276 +# define LSH 16,293 +# define RSH 17,310 +# define UNARY 18,327 + +cccp.y,2532 +typedef unsigned char U_CHAR;38, +struct arglist 41, + struct arglist *next;next42, + U_CHAR *name;name43, + int length;44, + int argno;45, +#define NULL 51, +#define GENERIC_PTR 56, +#define GENERIC_PTR 58, +#define NULL_PTR 63, +int yylex 66, +void yyerror 67, +int expression_value;68, +static jmp_buf parse_return_error;70, +static int keyword_parsing 73, +extern unsigned char is_idstart[is_idstart76, +extern unsigned char is_idstart[], is_idchar[is_idchar76, +extern unsigned char is_idstart[], is_idchar[], is_hor_space[is_hor_space76, +extern char *xmalloc xmalloc78, +extern int pedantic;81, +extern int traditional;84, +#define CHAR_TYPE_SIZE 87, +#define INT_TYPE_SIZE 91, +#define LONG_TYPE_SIZE 95, +#define WCHAR_TYPE_SIZE 99, +#define possible_sum_sign(104, +static void integer_overflow 106, +static long left_shift 107, +static long right_shift 108, + struct constant 113, + struct constant {long value;113, + struct constant {long value; int unsignedp;113, + struct constant {long value; int unsignedp;} integer;113, + struct name 114, + struct name {U_CHAR *address;address114, + struct name {U_CHAR *address; int length;114, + struct name {U_CHAR *address; int length;} name;114, + struct arglist *keywords;keywords115, + int voidval;116, + char *sval;sval117, +} yystype;118, +# define YYSTYPE 119, +# define YYDEBUG 122, +#define YYFINAL 127, +#define YYFLAG 128, +#define YYNTBASE 129, +#define YYTRANSLATE(132, +static const char yytranslate[yytranslate135, +static const short yyprhs[yyprhs167, +static const short yyrhs[yyrhs174, +static const short yyrline[yyrline195, +static const char *const yytname[yytname208, +static const short yyr1[yyr1219, +static const short yyr2[yyr2228, +static const short yydefact[yydefact239, +static const short yydefgoto[yydefgoto251, +static const short yypact[yypact256, +static const short yypgoto[yypgoto268, +#define YYLAST 274, +static const short yytable[yytable277, +static const short yycheck[yycheck301, +static char *lexptr;lexptr332, +parse_number 341, +struct token 437, + char *operator;operator438, + int token;439, +static struct token tokentab2[tokentab2442, +yylex 459, +parse_escape 740, +yyerror 836, +integer_overflow 844, +left_shift 851, +right_shift 873, +parse_c_expression 893, +extern int yydebug;919, +main 923, +unsigned char is_idchar[is_idchar948, +unsigned char is_idstart[is_idstart950, +char is_hor_space[is_hor_space953, +initialize_random_junk 958, +error 988, +warning 993, +lookup 999, + +/usr/share/bison/bison.simple,2238 +# define YYSTD(41, +# define YYSTD(43, +# define YYSTACK_ALLOC 51, +# define YYSIZE_T 52, +# define YYSTACK_ALLOC 56, +# define YYSIZE_T 57, +# define YYSTACK_ALLOC 60, +# define YYSTACK_FREE(68, +# define YYSIZE_T 72, +# define YYSIZE_T 76, +# define YYSTACK_ALLOC 79, +# define YYSTACK_FREE 80, +union yyalloc84, + short yyss;86, + YYSTYPE yyvs;87, + YYLTYPE yyls;89, +# define YYSTACK_GAP_MAX 94, +# define YYSTACK_BYTES(99, +# define YYSTACK_BYTES(103, +# define YYSTACK_RELOCATE(113, +# define YYSIZE_T 129, +# define YYSIZE_T 132, +# define YYSIZE_T 137, +# define YYSIZE_T 141, +# define YYSIZE_T 146, +#define yyerrok 149, +#define yyclearin 150, +#define YYEMPTY 151, +#define YYEOF 152, +#define YYACCEPT 153, +#define YYABORT 154, +#define YYERROR 155, +#define YYFAIL 159, +#define YYRECOVERING(160, +#define YYBACKUP(161, +#define YYTERROR 178, +#define YYERRCODE 179, +# define YYLLOC_DEFAULT(190, +# define YYLEX 201, +# define YYLEX 203, +# define YYLEX 207, +# define YYLEX 209, +# define YYLEX 213, +# define YYFPRINTF 226, +# define YYDPRINTF(229, +int yydebug;238, +# define YYDPRINTF(240, +# define YYINITDEPTH 245, +# undef YYMAXDEPTH256, +# define YYMAXDEPTH 260, +# define yymemcpy 265, +yymemcpy 272, +# define yystrlen 294, +yystrlen 299, +# define yystpcpy 317, +yystpcpy 323, +# define YYPARSE_PARAM_ARG 351, +# define YYPARSE_PARAM_DECL352, +# define YYPARSE_PARAM_ARG 354, +# define YYPARSE_PARAM_DECL 355, +# define YYPARSE_PARAM_ARG358, +# define YYPARSE_PARAM_DECL359, +int yyparse 365, +int yyparse 367, +#define YY_DECL_NON_LSP_VARIABLES 374, +# define YY_DECL_VARIABLES 385, +# define YY_DECL_VARIABLES 391, +yyparse 403, +# define YYPOPSTACK 445, +# define YYPOPSTACK 447, +# undef YYSTACK_RELOCATE548, + *++yyvsp yyvsp746, + *++yylsp yylsp748, + yyn 755, + yystate 757, + yystate 761, + goto yynewstate;763, + goto yyerrlab1;823, + yyerrstatus 846, + goto yyerrhandle;848, + yyn 861, + yystate 875, + yyn 895, + yyn 903, + YYDPRINTF 917, + *++yyvsp yyvsp919, + *++yylsp yylsp921, + yystate 924, + goto yynewstate;925, + yyresult 932, + goto yyreturn;933, + yyresult 939, + goto yyreturn;940, + yyerror 946, + yyresult 947, + +y-src/cccp.y,2171 +typedef unsigned char U_CHAR;38,1201 +struct arglist 41,1301 + struct arglist *next;next42,1318 + U_CHAR *name;name43,1342 + int length;44,1358 + int argno;45,1372 +#define NULL 51,1468 +#define GENERIC_PTR 56,1578 +#define GENERIC_PTR 58,1611 +#define NULL_PTR 63,1670 +int yylex 66,1712 +void yyerror 67,1726 +int expression_value;68,1743 +static jmp_buf parse_return_error;70,1766 +static int keyword_parsing 73,1865 +extern unsigned char is_idstart[is_idstart76,1944 +extern unsigned char is_idstart[], is_idchar[is_idchar76,1944 +extern unsigned char is_idstart[], is_idchar[], is_hor_space[is_hor_space76,1944 +extern char *xmalloc xmalloc78,2009 +extern int pedantic;81,2062 +extern int traditional;84,2114 +#define CHAR_TYPE_SIZE 87,2162 +#define INT_TYPE_SIZE 91,2229 +#define LONG_TYPE_SIZE 95,2296 +#define WCHAR_TYPE_SIZE 99,2365 +#define possible_sum_sign(104,2556 +static void integer_overflow 106,2632 +static long left_shift 107,2665 +static long right_shift 108,2692 + struct constant 112,2733 + struct constant {long value;112,2733 + struct constant {long value; int unsignedp;112,2733 + struct constant {long value; int unsignedp;} integer;112,2733 + struct name 113,2789 + struct name {U_CHAR *address;address113,2789 + struct name {U_CHAR *address; int length;113,2789 + struct name {U_CHAR *address; int length;} name;113,2789 + struct arglist *keywords;keywords114,2840 + int voidval;115,2868 + char *sval;sval116,2883 +start 143,3226 +exp1 148,3330 +exp 156,3505 +exp 185,4295 +keywords 306,7835 +static char *lexptr;lexptr332,8579 +parse_number 341,8842 +struct token 437,11038 + char *operator;operator438,11053 + int token;439,11071 +static struct token tokentab2[tokentab2442,11088 +yylex 459,11367 +parse_escape 740,17718 +yyerror 836,19599 +integer_overflow 844,19690 +left_shift 851,19804 +right_shift 873,20194 +parse_c_expression 893,20732 +extern int yydebug;919,21416 +main 923,21483 +unsigned char is_idchar[is_idchar948,21901 +unsigned char is_idstart[is_idstart950,21996 +char is_hor_space[is_hor_space953,22160 +initialize_random_junk 958,22259 +error 988,22915 +warning 993,22963 +lookup 999,23033 + +tex-src/nonewline.tex,0 + +php-src/sendmail.php,0 + +a-src/empty.zz,0 diff --cc test/manual/etags/c-src/emacs/src/keyboard.c index 077b147c76e,00000000000..68584ee71fc mode 100644,000000..100644 --- a/test/manual/etags/c-src/emacs/src/keyboard.c +++ b/test/manual/etags/c-src/emacs/src/keyboard.c @@@ -1,11960 -1,0 +1,11960 @@@ +/* Keyboard and mouse input; editor command loop. + +Copyright (C) 1985-1989, 1993-1997, 1999-2016 Free Software Foundation, +Inc. + +This file is part of GNU Emacs. + +GNU Emacs is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. ++the Free Software Foundation, either version 3 of the License, or (at ++your option) any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs. If not, see . */ + +#include + +#include "sysstdio.h" +#include + +#include "lisp.h" +#include "termchar.h" +#include "termopts.h" +#include "frame.h" +#include "termhooks.h" +#include "macros.h" +#include "keyboard.h" +#include "window.h" +#include "commands.h" +#include "character.h" +#include "buffer.h" +#include "disptab.h" +#include "dispextern.h" +#include "syntax.h" +#include "intervals.h" +#include "keymap.h" +#include "blockinput.h" +#include "puresize.h" +#include "systime.h" +#include "atimer.h" +#include "process.h" +#include + +#ifdef HAVE_PTHREAD +#include +#endif +#ifdef MSDOS +#include "msdos.h" +#include +#else /* not MSDOS */ +#include +#endif /* not MSDOS */ + +#if defined USABLE_FIONREAD && defined USG5_4 +# include +#endif + +#include "syssignal.h" + +#include +#include +#include + +#ifdef HAVE_WINDOW_SYSTEM +#include TERM_HEADER +#endif /* HAVE_WINDOW_SYSTEM */ + +/* Variables for blockinput.h: */ + +/* Positive if interrupt input is blocked right now. */ +volatile int interrupt_input_blocked; + +/* True means an input interrupt or alarm signal has arrived. + The QUIT macro checks this. */ +volatile bool pending_signals; + +#define KBD_BUFFER_SIZE 4096 + +KBOARD *initial_kboard; +KBOARD *current_kboard; +static KBOARD *all_kboards; + +/* True in the single-kboard state, false in the any-kboard state. */ +static bool single_kboard; + +#define NUM_RECENT_KEYS (300) + +/* Index for storing next element into recent_keys. */ +static int recent_keys_index; + +/* Total number of elements stored into recent_keys. */ +static int total_keys; + +/* This vector holds the last NUM_RECENT_KEYS keystrokes. */ +static Lisp_Object recent_keys; + +/* Vector holding the key sequence that invoked the current command. + It is reused for each command, and it may be longer than the current + sequence; this_command_key_count indicates how many elements + actually mean something. + It's easier to staticpro a single Lisp_Object than an array. */ +Lisp_Object this_command_keys; +ptrdiff_t this_command_key_count; + +/* True after calling Freset_this_command_lengths. + Usually it is false. */ +static bool this_command_key_count_reset; + +/* This vector is used as a buffer to record the events that were actually read + by read_key_sequence. */ +static Lisp_Object raw_keybuf; +static int raw_keybuf_count; + +#define GROW_RAW_KEYBUF \ + if (raw_keybuf_count == ASIZE (raw_keybuf)) \ + raw_keybuf = larger_vector (raw_keybuf, 1, -1) + +/* Number of elements of this_command_keys + that precede this key sequence. */ +static ptrdiff_t this_single_command_key_start; + +/* Record values of this_command_key_count and echo_length () + before this command was read. */ +static ptrdiff_t before_command_key_count; +static ptrdiff_t before_command_echo_length; + +#ifdef HAVE_STACK_OVERFLOW_HANDLING + +/* For longjmp to recover from C stack overflow. */ +sigjmp_buf return_to_command_loop; + +/* Message displayed by Vtop_level when recovering from C stack overflow. */ +static Lisp_Object recover_top_level_message; + +#endif /* HAVE_STACK_OVERFLOW_HANDLING */ + +/* Message normally displayed by Vtop_level. */ +static Lisp_Object regular_top_level_message; + +/* For longjmp to where kbd input is being done. */ + +static sys_jmp_buf getcjmp; + +/* True while doing kbd input. */ +bool waiting_for_input; + +/* True while displaying for echoing. Delays C-g throwing. */ + +static bool echoing; + +/* Non-null means we can start echoing at the next input pause even + though there is something in the echo area. */ + +static struct kboard *ok_to_echo_at_next_pause; + +/* The kboard last echoing, or null for none. Reset to 0 in + cancel_echoing. If non-null, and a current echo area message + exists, and echo_message_buffer is eq to the current message + buffer, we know that the message comes from echo_kboard. */ + +struct kboard *echo_kboard; + +/* The buffer used for echoing. Set in echo_now, reset in + cancel_echoing. */ + +Lisp_Object echo_message_buffer; + +/* True means C-g should cause immediate error-signal. */ +bool immediate_quit; + +/* Character that causes a quit. Normally C-g. + + If we are running on an ordinary terminal, this must be an ordinary + ASCII char, since we want to make it our interrupt character. + + If we are not running on an ordinary terminal, it still needs to be + an ordinary ASCII char. This character needs to be recognized in + the input interrupt handler. At this point, the keystroke is + represented as a struct input_event, while the desired quit + character is specified as a lispy event. The mapping from struct + input_events to lispy events cannot run in an interrupt handler, + and the reverse mapping is difficult for anything but ASCII + keystrokes. + + FOR THESE ELABORATE AND UNSATISFYING REASONS, quit_char must be an + ASCII character. */ +int quit_char; + +/* Current depth in recursive edits. */ +EMACS_INT command_loop_level; + +/* If not Qnil, this is a switch-frame event which we decided to put + off until the end of a key sequence. This should be read as the + next command input, after any unread_command_events. + + read_key_sequence uses this to delay switch-frame events until the + end of the key sequence; Fread_char uses it to put off switch-frame + events until a non-ASCII event is acceptable as input. */ +Lisp_Object unread_switch_frame; + +/* Last size recorded for a current buffer which is not a minibuffer. */ +static ptrdiff_t last_non_minibuf_size; + +/* Total number of times read_char has returned, modulo UINTMAX_MAX + 1. */ +uintmax_t num_input_events; + +/* Value of num_nonmacro_input_events as of last auto save. */ + +static EMACS_INT last_auto_save; + +/* The value of point when the last command was started. */ +static ptrdiff_t last_point_position; + +/* The frame in which the last input event occurred, or Qmacro if the + last event came from a macro. We use this to determine when to + generate switch-frame events. This may be cleared by functions + like Fselect_frame, to make sure that a switch-frame event is + generated by the next character. + + FIXME: This is modified by a signal handler so it should be volatile. + It's exported to Lisp, though, so it can't simply be marked + 'volatile' here. */ +Lisp_Object internal_last_event_frame; + +/* `read_key_sequence' stores here the command definition of the + key sequence that it reads. */ +static Lisp_Object read_key_sequence_cmd; +static Lisp_Object read_key_sequence_remapped; + +/* File in which we write all commands we read. */ +static FILE *dribble; + +/* True if input is available. */ +bool input_pending; + +/* True if more input was available last time we read an event. + + Since redisplay can take a significant amount of time and is not + indispensable to perform the user's commands, when input arrives + "too fast", Emacs skips redisplay. More specifically, if the next + command has already been input when we finish the previous command, + we skip the intermediate redisplay. + + This is useful to try and make sure Emacs keeps up with fast input + rates, such as auto-repeating keys. But in some cases, this proves + too conservative: we may end up disabling redisplay for the whole + duration of a key repetition, even though we could afford to + redisplay every once in a while. + + So we "sample" the input_pending flag before running a command and + use *that* value after running the command to decide whether to + skip redisplay or not. This way, we only skip redisplay if we + really can't keep up with the repeat rate. + + This only makes a difference if the next input arrives while running the + command, which is very unlikely if the command is executed quickly. + IOW this tends to avoid skipping redisplay after a long running command + (which is a case where skipping redisplay is not very useful since the + redisplay time is small compared to the time it took to run the command). + + A typical use case is when scrolling. Scrolling time can be split into: + - Time to do jit-lock on the newly displayed portion of buffer. + - Time to run the actual scroll command. + - Time to perform the redisplay. + Jit-lock can happen either during the command or during the redisplay. + In the most painful cases, the jit-lock time is the one that dominates. + Also jit-lock can be tweaked (via jit-lock-defer) to delay its job, at the + cost of temporary inaccuracy in display and scrolling. + So without input_was_pending, what typically happens is the following: + - when the command starts, there's no pending input (yet). + - the scroll command triggers jit-lock. + - during the long jit-lock time the next input arrives. + - at the end of the command, we check input_pending and hence decide to + skip redisplay. + - we read the next input and start over. + End result: all the hard work of jit-locking is "wasted" since redisplay + doesn't actually happens (at least not before the input rate slows down). + With input_was_pending redisplay is still skipped if Emacs can't keep up + with the input rate, but if it can keep up just enough that there's no + input_pending when we begin the command, then redisplay is not skipped + which results in better feedback to the user. */ +static bool input_was_pending; + +/* Circular buffer for pre-read keyboard input. */ + +static struct input_event kbd_buffer[KBD_BUFFER_SIZE]; + +/* Pointer to next available character in kbd_buffer. + If kbd_fetch_ptr == kbd_store_ptr, the buffer is empty. + This may be kbd_buffer + KBD_BUFFER_SIZE, meaning that the + next available char is in kbd_buffer[0]. */ +static struct input_event *kbd_fetch_ptr; + +/* Pointer to next place to store character in kbd_buffer. This + may be kbd_buffer + KBD_BUFFER_SIZE, meaning that the next + character should go in kbd_buffer[0]. */ +static struct input_event * volatile kbd_store_ptr; + +/* The above pair of variables forms a "queue empty" flag. When we + enqueue a non-hook event, we increment kbd_store_ptr. When we + dequeue a non-hook event, we increment kbd_fetch_ptr. We say that + there is input available if the two pointers are not equal. + + Why not just have a flag set and cleared by the enqueuing and + dequeuing functions? Such a flag could be screwed up by interrupts + at inopportune times. */ + +static void recursive_edit_unwind (Lisp_Object buffer); +static Lisp_Object command_loop (void); + +static void echo_now (void); +static ptrdiff_t echo_length (void); + +/* Incremented whenever a timer is run. */ +unsigned timers_run; + +/* Address (if not 0) of struct timespec to zero out if a SIGIO interrupt + happens. */ +struct timespec *input_available_clear_time; + +/* True means use SIGIO interrupts; false means use CBREAK mode. + Default is true if INTERRUPT_INPUT is defined. */ +bool interrupt_input; + +/* Nonzero while interrupts are temporarily deferred during redisplay. */ +bool interrupts_deferred; + +/* The time when Emacs started being idle. */ + +static struct timespec timer_idleness_start_time; + +/* After Emacs stops being idle, this saves the last value + of timer_idleness_start_time from when it was idle. */ + +static struct timespec timer_last_idleness_start_time; + + +/* Global variable declarations. */ + +/* Flags for readable_events. */ +#define READABLE_EVENTS_DO_TIMERS_NOW (1 << 0) +#define READABLE_EVENTS_FILTER_EVENTS (1 << 1) +#define READABLE_EVENTS_IGNORE_SQUEEZABLES (1 << 2) + +/* Function for init_keyboard to call with no args (if nonzero). */ +static void (*keyboard_init_hook) (void); + +static bool get_input_pending (int); +static bool readable_events (int); +static Lisp_Object read_char_x_menu_prompt (Lisp_Object, + Lisp_Object, bool *); +static Lisp_Object read_char_minibuf_menu_prompt (int, Lisp_Object); +static Lisp_Object make_lispy_event (struct input_event *); +static Lisp_Object make_lispy_movement (struct frame *, Lisp_Object, + enum scroll_bar_part, + Lisp_Object, Lisp_Object, + Time); +static Lisp_Object modify_event_symbol (ptrdiff_t, int, Lisp_Object, + Lisp_Object, const char *const *, + Lisp_Object *, ptrdiff_t); +static Lisp_Object make_lispy_switch_frame (Lisp_Object); +static Lisp_Object make_lispy_focus_in (Lisp_Object); +#ifdef HAVE_WINDOW_SYSTEM +static Lisp_Object make_lispy_focus_out (Lisp_Object); +#endif /* HAVE_WINDOW_SYSTEM */ +static bool help_char_p (Lisp_Object); +static void save_getcjmp (sys_jmp_buf); +static void restore_getcjmp (sys_jmp_buf); +static Lisp_Object apply_modifiers (int, Lisp_Object); +static void clear_event (struct input_event *); +static void restore_kboard_configuration (int); +#ifdef USABLE_SIGIO +static void deliver_input_available_signal (int signo); +#endif +static void handle_interrupt (bool); +static _Noreturn void quit_throw_to_read_char (bool); +static void process_special_events (void); +static void timer_start_idle (void); +static void timer_stop_idle (void); +static void timer_resume_idle (void); +static void deliver_user_signal (int); +static char *find_user_signal_name (int); +static void store_user_signal_events (void); + +/* These setters are used only in this file, so they can be private. */ +static void +kset_echo_string (struct kboard *kb, Lisp_Object val) +{ + kb->echo_string_ = val; +} +static void +kset_kbd_queue (struct kboard *kb, Lisp_Object val) +{ + kb->kbd_queue_ = val; +} +static void +kset_keyboard_translate_table (struct kboard *kb, Lisp_Object val) +{ + kb->Vkeyboard_translate_table_ = val; +} +static void +kset_last_prefix_arg (struct kboard *kb, Lisp_Object val) +{ + kb->Vlast_prefix_arg_ = val; +} +static void +kset_last_repeatable_command (struct kboard *kb, Lisp_Object val) +{ + kb->Vlast_repeatable_command_ = val; +} +static void +kset_local_function_key_map (struct kboard *kb, Lisp_Object val) +{ + kb->Vlocal_function_key_map_ = val; +} +static void +kset_overriding_terminal_local_map (struct kboard *kb, Lisp_Object val) +{ + kb->Voverriding_terminal_local_map_ = val; +} +static void +kset_real_last_command (struct kboard *kb, Lisp_Object val) +{ + kb->Vreal_last_command_ = val; +} +static void +kset_system_key_syms (struct kboard *kb, Lisp_Object val) +{ + kb->system_key_syms_ = val; +} + + +/* Add C to the echo string, without echoing it immediately. C can be + a character, which is pretty-printed, or a symbol, whose name is + printed. */ + +static void +echo_add_key (Lisp_Object c) +{ + char initbuf[KEY_DESCRIPTION_SIZE + 100]; + ptrdiff_t size = sizeof initbuf; + char *buffer = initbuf; + char *ptr = buffer; + Lisp_Object echo_string; + USE_SAFE_ALLOCA; + + echo_string = KVAR (current_kboard, echo_string); + + /* If someone has passed us a composite event, use its head symbol. */ + c = EVENT_HEAD (c); + + if (INTEGERP (c)) + ptr = push_key_description (XINT (c), ptr); + else if (SYMBOLP (c)) + { + Lisp_Object name = SYMBOL_NAME (c); + ptrdiff_t nbytes = SBYTES (name); + + if (size - (ptr - buffer) < nbytes) + { + ptrdiff_t offset = ptr - buffer; + size = max (2 * size, size + nbytes); + buffer = SAFE_ALLOCA (size); + ptr = buffer + offset; + } + + ptr += copy_text (SDATA (name), (unsigned char *) ptr, nbytes, + STRING_MULTIBYTE (name), 1); + } + + if ((NILP (echo_string) || SCHARS (echo_string) == 0) + && help_char_p (c)) + { + static const char text[] = " (Type ? for further options)"; + int len = sizeof text - 1; + + if (size - (ptr - buffer) < len) + { + ptrdiff_t offset = ptr - buffer; + size += len; + buffer = SAFE_ALLOCA (size); + ptr = buffer + offset; + } + + memcpy (ptr, text, len); + ptr += len; + } + + /* Replace a dash from echo_dash with a space, otherwise add a space + at the end as a separator between keys. */ + AUTO_STRING (space, " "); + if (STRINGP (echo_string) && SCHARS (echo_string) > 1) + { + Lisp_Object last_char, prev_char, idx; + + idx = make_number (SCHARS (echo_string) - 2); + prev_char = Faref (echo_string, idx); + + idx = make_number (SCHARS (echo_string) - 1); + last_char = Faref (echo_string, idx); + + /* We test PREV_CHAR to make sure this isn't the echoing of a + minus-sign. */ + if (XINT (last_char) == '-' && XINT (prev_char) != ' ') + Faset (echo_string, idx, make_number (' ')); + else + echo_string = concat2 (echo_string, space); + } + else if (STRINGP (echo_string) && SCHARS (echo_string) > 0) + echo_string = concat2 (echo_string, space); + + kset_echo_string + (current_kboard, + concat2 (echo_string, make_string (buffer, ptr - buffer))); + SAFE_FREE (); +} + +/* Add C to the echo string, if echoing is going on. C can be a + character or a symbol. */ + +static void +echo_char (Lisp_Object c) +{ + if (current_kboard->immediate_echo) + { + echo_add_key (c); + echo_now (); + } +} + +/* Temporarily add a dash to the end of the echo string if it's not + empty, so that it serves as a mini-prompt for the very next + character. */ + +static void +echo_dash (void) +{ + /* Do nothing if not echoing at all. */ + if (NILP (KVAR (current_kboard, echo_string))) + return; + + if (this_command_key_count == 0) + return; + + if (!current_kboard->immediate_echo + && SCHARS (KVAR (current_kboard, echo_string)) == 0) + return; + + /* Do nothing if we just printed a prompt. */ + if (current_kboard->echo_after_prompt + == SCHARS (KVAR (current_kboard, echo_string))) + return; + + /* Do nothing if we have already put a dash at the end. */ + if (SCHARS (KVAR (current_kboard, echo_string)) > 1) + { + Lisp_Object last_char, prev_char, idx; + + idx = make_number (SCHARS (KVAR (current_kboard, echo_string)) - 2); + prev_char = Faref (KVAR (current_kboard, echo_string), idx); + + idx = make_number (SCHARS (KVAR (current_kboard, echo_string)) - 1); + last_char = Faref (KVAR (current_kboard, echo_string), idx); + + if (XINT (last_char) == '-' && XINT (prev_char) != ' ') + return; + } + + /* Put a dash at the end of the buffer temporarily, + but make it go away when the next character is added. */ + AUTO_STRING (dash, "-"); + kset_echo_string (current_kboard, + concat2 (KVAR (current_kboard, echo_string), dash)); + echo_now (); +} + +/* Display the current echo string, and begin echoing if not already + doing so. */ + +static void +echo_now (void) +{ + if (!current_kboard->immediate_echo) + { + ptrdiff_t i; + current_kboard->immediate_echo = 1; + + for (i = 0; i < this_command_key_count; i++) + { + Lisp_Object c; + + /* Set before_command_echo_length to the value that would + have been saved before the start of this subcommand in + command_loop_1, if we had already been echoing then. */ + if (i == this_single_command_key_start) + before_command_echo_length = echo_length (); + + c = AREF (this_command_keys, i); + if (! (EVENT_HAS_PARAMETERS (c) + && EQ (EVENT_HEAD_KIND (EVENT_HEAD (c)), Qmouse_movement))) + echo_char (c); + } + + /* Set before_command_echo_length to the value that would + have been saved before the start of this subcommand in + command_loop_1, if we had already been echoing then. */ + if (this_command_key_count == this_single_command_key_start) + before_command_echo_length = echo_length (); + + /* Put a dash at the end to invite the user to type more. */ + echo_dash (); + } + + echoing = 1; + /* FIXME: Use call (Qmessage) so it can be advised (e.g. emacspeak). */ + message3_nolog (KVAR (current_kboard, echo_string)); + echoing = 0; + + /* Record in what buffer we echoed, and from which kboard. */ + echo_message_buffer = echo_area_buffer[0]; + echo_kboard = current_kboard; + + if (waiting_for_input && !NILP (Vquit_flag)) + quit_throw_to_read_char (0); +} + +/* Turn off echoing, for the start of a new command. */ + +void +cancel_echoing (void) +{ + current_kboard->immediate_echo = 0; + current_kboard->echo_after_prompt = -1; + kset_echo_string (current_kboard, Qnil); + ok_to_echo_at_next_pause = NULL; + echo_kboard = NULL; + echo_message_buffer = Qnil; +} + +/* Return the length of the current echo string. */ + +static ptrdiff_t +echo_length (void) +{ + return (STRINGP (KVAR (current_kboard, echo_string)) + ? SCHARS (KVAR (current_kboard, echo_string)) + : 0); +} + +/* Truncate the current echo message to its first LEN chars. + This and echo_char get used by read_key_sequence when the user + switches frames while entering a key sequence. */ + +static void +echo_truncate (ptrdiff_t nchars) +{ + if (STRINGP (KVAR (current_kboard, echo_string))) + kset_echo_string (current_kboard, + Fsubstring (KVAR (current_kboard, echo_string), + make_number (0), make_number (nchars))); + truncate_echo_area (nchars); +} + + +/* Functions for manipulating this_command_keys. */ +static void +add_command_key (Lisp_Object key) +{ +#if 0 /* Not needed after we made Freset_this_command_lengths + do the job immediately. */ + /* If reset-this-command-length was called recently, obey it now. + See the doc string of that function for an explanation of why. */ + if (before_command_restore_flag) + { + this_command_key_count = before_command_key_count_1; + if (this_command_key_count < this_single_command_key_start) + this_single_command_key_start = this_command_key_count; + echo_truncate (before_command_echo_length_1); + before_command_restore_flag = 0; + } +#endif + + if (this_command_key_count >= ASIZE (this_command_keys)) + this_command_keys = larger_vector (this_command_keys, 1, -1); + + ASET (this_command_keys, this_command_key_count, key); + ++this_command_key_count; +} + + +Lisp_Object +recursive_edit_1 (void) +{ + ptrdiff_t count = SPECPDL_INDEX (); + Lisp_Object val; + + if (command_loop_level > 0) + { + specbind (Qstandard_output, Qt); + specbind (Qstandard_input, Qt); + } + +#ifdef HAVE_WINDOW_SYSTEM + /* The command loop has started an hourglass timer, so we have to + cancel it here, otherwise it will fire because the recursive edit + can take some time. Do not check for display_hourglass_p here, + because it could already be nil. */ + cancel_hourglass (); +#endif + + /* This function may have been called from a debugger called from + within redisplay, for instance by Edebugging a function called + from fontification-functions. We want to allow redisplay in + the debugging session. + + The recursive edit is left with a `(throw exit ...)'. The `exit' + tag is not caught anywhere in redisplay, i.e. when we leave the + recursive edit, the original redisplay leading to the recursive + edit will be unwound. The outcome should therefore be safe. */ + specbind (Qinhibit_redisplay, Qnil); + redisplaying_p = 0; + + val = command_loop (); + if (EQ (val, Qt)) + Fsignal (Qquit, Qnil); + /* Handle throw from read_minibuf when using minibuffer + while it's active but we're in another window. */ + if (STRINGP (val)) + xsignal1 (Qerror, val); + + return unbind_to (count, Qnil); +} + +/* When an auto-save happens, record the "time", and don't do again soon. */ + +void +record_auto_save (void) +{ + last_auto_save = num_nonmacro_input_events; +} + +/* Make an auto save happen as soon as possible at command level. */ + +#ifdef SIGDANGER +void +force_auto_save_soon (void) +{ + last_auto_save = - auto_save_interval - 1; + + record_asynch_buffer_change (); +} +#endif + +DEFUN ("recursive-edit", Frecursive_edit, Srecursive_edit, 0, 0, "", + doc: /* Invoke the editor command loop recursively. +To get out of the recursive edit, a command can throw to `exit' -- for +instance `(throw 'exit nil)'. +If you throw a value other than t, `recursive-edit' returns normally +to the function that called it. Throwing a t value causes +`recursive-edit' to quit, so that control returns to the command loop +one level up. + +This function is called by the editor initialization to begin editing. */) + (void) +{ + ptrdiff_t count = SPECPDL_INDEX (); + Lisp_Object buffer; + + /* If we enter while input is blocked, don't lock up here. + This may happen through the debugger during redisplay. */ + if (input_blocked_p ()) + return Qnil; + + if (command_loop_level >= 0 + && current_buffer != XBUFFER (XWINDOW (selected_window)->contents)) + buffer = Fcurrent_buffer (); + else + buffer = Qnil; + + /* Don't do anything interesting between the increment and the + record_unwind_protect! Otherwise, we could get distracted and + never decrement the counter again. */ + command_loop_level++; + update_mode_lines = 17; + record_unwind_protect (recursive_edit_unwind, buffer); + + /* If we leave recursive_edit_1 below with a `throw' for instance, + like it is done in the splash screen display, we have to + make sure that we restore single_kboard as command_loop_1 + would have done if it were left normally. */ + if (command_loop_level > 0) + temporarily_switch_to_single_kboard (SELECTED_FRAME ()); + + recursive_edit_1 (); + return unbind_to (count, Qnil); +} + +void +recursive_edit_unwind (Lisp_Object buffer) +{ + if (BUFFERP (buffer)) + Fset_buffer (buffer); + + command_loop_level--; + update_mode_lines = 18; +} + + +#if 0 /* These two functions are now replaced with + temporarily_switch_to_single_kboard. */ +static void +any_kboard_state () +{ +#if 0 /* Theory: if there's anything in Vunread_command_events, + it will right away be read by read_key_sequence, + and then if we do switch KBOARDS, it will go into the side + queue then. So we don't need to do anything special here -- rms. */ + if (CONSP (Vunread_command_events)) + { + current_kboard->kbd_queue + = nconc2 (Vunread_command_events, current_kboard->kbd_queue); + current_kboard->kbd_queue_has_data = 1; + } + Vunread_command_events = Qnil; +#endif + single_kboard = 0; +} + +/* Switch to the single-kboard state, making current_kboard + the only KBOARD from which further input is accepted. */ + +void +single_kboard_state () +{ + single_kboard = 1; +} +#endif + +/* If we're in single_kboard state for kboard KBOARD, + get out of it. */ + +void +not_single_kboard_state (KBOARD *kboard) +{ + if (kboard == current_kboard) + single_kboard = 0; +} + +/* Maintain a stack of kboards, so other parts of Emacs + can switch temporarily to the kboard of a given frame + and then revert to the previous status. */ + +struct kboard_stack +{ + KBOARD *kboard; + struct kboard_stack *next; +}; + +static struct kboard_stack *kboard_stack; + +void +push_kboard (struct kboard *k) +{ + struct kboard_stack *p = xmalloc (sizeof *p); + + p->next = kboard_stack; + p->kboard = current_kboard; + kboard_stack = p; + + current_kboard = k; +} + +void +pop_kboard (void) +{ + struct terminal *t; + struct kboard_stack *p = kboard_stack; + bool found = 0; + for (t = terminal_list; t; t = t->next_terminal) + { + if (t->kboard == p->kboard) + { + current_kboard = p->kboard; + found = 1; + break; + } + } + if (!found) + { + /* The terminal we remembered has been deleted. */ + current_kboard = FRAME_KBOARD (SELECTED_FRAME ()); + single_kboard = 0; + } + kboard_stack = p->next; + xfree (p); +} + +/* Switch to single_kboard mode, making current_kboard the only KBOARD + from which further input is accepted. If F is non-nil, set its + KBOARD as the current keyboard. + + This function uses record_unwind_protect_int to return to the previous + state later. + + If Emacs is already in single_kboard mode, and F's keyboard is + locked, then this function will throw an error. */ + +void +temporarily_switch_to_single_kboard (struct frame *f) +{ + bool was_locked = single_kboard; + if (was_locked) + { + if (f != NULL && FRAME_KBOARD (f) != current_kboard) + /* We can not switch keyboards while in single_kboard mode. + In rare cases, Lisp code may call `recursive-edit' (or + `read-minibuffer' or `y-or-n-p') after it switched to a + locked frame. For example, this is likely to happen + when server.el connects to a new terminal while Emacs is in + single_kboard mode. It is best to throw an error instead + of presenting the user with a frozen screen. */ + error ("Terminal %d is locked, cannot read from it", + FRAME_TERMINAL (f)->id); + else + /* This call is unnecessary, but helps + `restore_kboard_configuration' discover if somebody changed + `current_kboard' behind our back. */ + push_kboard (current_kboard); + } + else if (f != NULL) + current_kboard = FRAME_KBOARD (f); + single_kboard = 1; + record_unwind_protect_int (restore_kboard_configuration, was_locked); +} + +#if 0 /* This function is not needed anymore. */ +void +record_single_kboard_state () +{ + if (single_kboard) + push_kboard (current_kboard); + record_unwind_protect_int (restore_kboard_configuration, single_kboard); +} +#endif + +static void +restore_kboard_configuration (int was_locked) +{ + single_kboard = was_locked; + if (was_locked) + { + struct kboard *prev = current_kboard; + pop_kboard (); + /* The pop should not change the kboard. */ + if (single_kboard && current_kboard != prev) + emacs_abort (); + } +} + + +/* Handle errors that are not handled at inner levels + by printing an error message and returning to the editor command loop. */ + +static Lisp_Object +cmd_error (Lisp_Object data) +{ + Lisp_Object old_level, old_length; + char macroerror[sizeof "After..kbd macro iterations: " + + INT_STRLEN_BOUND (EMACS_INT)]; + +#ifdef HAVE_WINDOW_SYSTEM + if (display_hourglass_p) + cancel_hourglass (); +#endif + + if (!NILP (executing_kbd_macro)) + { + if (executing_kbd_macro_iterations == 1) + sprintf (macroerror, "After 1 kbd macro iteration: "); + else + sprintf (macroerror, "After %"pI"d kbd macro iterations: ", + executing_kbd_macro_iterations); + } + else + *macroerror = 0; + + Vstandard_output = Qt; + Vstandard_input = Qt; + Vexecuting_kbd_macro = Qnil; + executing_kbd_macro = Qnil; + kset_prefix_arg (current_kboard, Qnil); + kset_last_prefix_arg (current_kboard, Qnil); + cancel_echoing (); + + /* Avoid unquittable loop if data contains a circular list. */ + old_level = Vprint_level; + old_length = Vprint_length; + XSETFASTINT (Vprint_level, 10); + XSETFASTINT (Vprint_length, 10); + cmd_error_internal (data, macroerror); + Vprint_level = old_level; + Vprint_length = old_length; + + Vquit_flag = Qnil; + Vinhibit_quit = Qnil; + + return make_number (0); +} + +/* Take actions on handling an error. DATA is the data that describes + the error. + + CONTEXT is a C-string containing ASCII characters only which + describes the context in which the error happened. If we need to + generalize CONTEXT to allow multibyte characters, make it a Lisp + string. */ + +void +cmd_error_internal (Lisp_Object data, const char *context) +{ + /* The immediate context is not interesting for Quits, + since they are asynchronous. */ + if (EQ (XCAR (data), Qquit)) + Vsignaling_function = Qnil; + + Vquit_flag = Qnil; + Vinhibit_quit = Qt; + + /* Use user's specified output function if any. */ + if (!NILP (Vcommand_error_function)) + call3 (Vcommand_error_function, data, + context ? build_string (context) : empty_unibyte_string, + Vsignaling_function); + + Vsignaling_function = Qnil; +} + +DEFUN ("command-error-default-function", Fcommand_error_default_function, + Scommand_error_default_function, 3, 3, 0, + doc: /* Produce default output for unhandled error message. +Default value of `command-error-function'. */) + (Lisp_Object data, Lisp_Object context, Lisp_Object signal) +{ + struct frame *sf = SELECTED_FRAME (); + + CHECK_STRING (context); + + /* If the window system or terminal frame hasn't been initialized + yet, or we're not interactive, write the message to stderr and exit. */ + if (!sf->glyphs_initialized_p + /* The initial frame is a special non-displaying frame. It + will be current in daemon mode when there are no frames + to display, and in non-daemon mode before the real frame + has finished initializing. If an error is thrown in the + latter case while creating the frame, then the frame + will never be displayed, so the safest thing to do is + write to stderr and quit. In daemon mode, there are + many other potential errors that do not prevent frames + from being created, so continuing as normal is better in + that case. */ + || (!IS_DAEMON && FRAME_INITIAL_P (sf)) + || noninteractive) + { + print_error_message (data, Qexternal_debugging_output, + SSDATA (context), signal); + Fterpri (Qexternal_debugging_output, Qnil); + Fkill_emacs (make_number (-1)); + } + else + { + clear_message (1, 0); + Fdiscard_input (); + message_log_maybe_newline (); + bitch_at_user (); + + print_error_message (data, Qt, SSDATA (context), signal); + } + return Qnil; +} + +static Lisp_Object command_loop_2 (Lisp_Object); +static Lisp_Object top_level_1 (Lisp_Object); + +/* Entry to editor-command-loop. + This level has the catches for exiting/returning to editor command loop. + It returns nil to exit recursive edit, t to abort it. */ + +Lisp_Object +command_loop (void) +{ +#ifdef HAVE_STACK_OVERFLOW_HANDLING + /* At least on GNU/Linux, saving signal mask is important here. */ + if (sigsetjmp (return_to_command_loop, 1) != 0) + { + /* Comes here from handle_sigsegv, see sysdep.c. */ + init_eval (); + Vinternal__top_level_message = recover_top_level_message; + } + else + Vinternal__top_level_message = regular_top_level_message; +#endif /* HAVE_STACK_OVERFLOW_HANDLING */ + if (command_loop_level > 0 || minibuf_level > 0) + { + Lisp_Object val; + val = internal_catch (Qexit, command_loop_2, Qnil); + executing_kbd_macro = Qnil; + return val; + } + else + while (1) + { + internal_catch (Qtop_level, top_level_1, Qnil); + internal_catch (Qtop_level, command_loop_2, Qnil); + executing_kbd_macro = Qnil; + + /* End of file in -batch run causes exit here. */ + if (noninteractive) + Fkill_emacs (Qt); + } +} + +/* Here we catch errors in execution of commands within the + editing loop, and reenter the editing loop. + When there is an error, cmd_error runs and returns a non-nil + value to us. A value of nil means that command_loop_1 itself + returned due to end of file (or end of kbd macro). */ + +static Lisp_Object +command_loop_2 (Lisp_Object ignore) +{ + register Lisp_Object val; + + do + val = internal_condition_case (command_loop_1, Qerror, cmd_error); + while (!NILP (val)); + + return Qnil; +} + +static Lisp_Object +top_level_2 (void) +{ + return Feval (Vtop_level, Qnil); +} + +static Lisp_Object +top_level_1 (Lisp_Object ignore) +{ + /* On entry to the outer level, run the startup file. */ + if (!NILP (Vtop_level)) + internal_condition_case (top_level_2, Qerror, cmd_error); + else if (!NILP (Vpurify_flag)) + message1 ("Bare impure Emacs (standard Lisp code not loaded)"); + else + message1 ("Bare Emacs (standard Lisp code not loaded)"); + return Qnil; +} + +DEFUN ("top-level", Ftop_level, Stop_level, 0, 0, "", + doc: /* Exit all recursive editing levels. +This also exits all active minibuffers. */ + attributes: noreturn) + (void) +{ +#ifdef HAVE_WINDOW_SYSTEM + if (display_hourglass_p) + cancel_hourglass (); +#endif + + /* Unblock input if we enter with input blocked. This may happen if + redisplay traps e.g. during tool-bar update with input blocked. */ + totally_unblock_input (); + + Fthrow (Qtop_level, Qnil); +} + +static _Noreturn void +user_error (const char *msg) +{ + xsignal1 (Quser_error, build_string (msg)); +} + +/* _Noreturn will be added to prototype by make-docfile. */ +DEFUN ("exit-recursive-edit", Fexit_recursive_edit, Sexit_recursive_edit, 0, 0, "", + doc: /* Exit from the innermost recursive edit or minibuffer. */ + attributes: noreturn) + (void) +{ + if (command_loop_level > 0 || minibuf_level > 0) + Fthrow (Qexit, Qnil); + + user_error ("No recursive edit is in progress"); +} + +/* _Noreturn will be added to prototype by make-docfile. */ +DEFUN ("abort-recursive-edit", Fabort_recursive_edit, Sabort_recursive_edit, 0, 0, "", + doc: /* Abort the command that requested this recursive edit or minibuffer input. */ + attributes: noreturn) + (void) +{ + if (command_loop_level > 0 || minibuf_level > 0) + Fthrow (Qexit, Qt); + + user_error ("No recursive edit is in progress"); +} + +/* Restore mouse tracking enablement. See Ftrack_mouse for the only use + of this function. */ + +static void +tracking_off (Lisp_Object old_value) +{ + do_mouse_tracking = old_value; + if (NILP (old_value)) + { + /* Redisplay may have been preempted because there was input + available, and it assumes it will be called again after the + input has been processed. If the only input available was + the sort that we have just disabled, then we need to call + redisplay. */ + if (!readable_events (READABLE_EVENTS_DO_TIMERS_NOW)) + { + redisplay_preserve_echo_area (6); + get_input_pending (READABLE_EVENTS_DO_TIMERS_NOW); + } + } +} + +DEFUN ("internal--track-mouse", Ftrack_mouse, Strack_mouse, 1, 1, 0, + doc: /* Call BODYFUN with mouse movement events enabled. */) + (Lisp_Object bodyfun) +{ + ptrdiff_t count = SPECPDL_INDEX (); + Lisp_Object val; + + record_unwind_protect (tracking_off, do_mouse_tracking); + + do_mouse_tracking = Qt; + + val = call0 (bodyfun); + return unbind_to (count, val); +} + +/* If mouse has moved on some frame, return one of those frames. + + Return 0 otherwise. + + If ignore_mouse_drag_p is non-zero, ignore (implicit) mouse movement + after resizing the tool-bar window. */ + +bool ignore_mouse_drag_p; + +static struct frame * +some_mouse_moved (void) +{ + Lisp_Object tail, frame; + + if (ignore_mouse_drag_p) + { + /* ignore_mouse_drag_p = 0; */ + return 0; + } + + FOR_EACH_FRAME (tail, frame) + { + if (XFRAME (frame)->mouse_moved) + return XFRAME (frame); + } + + return 0; +} + + +/* This is the actual command reading loop, + sans error-handling encapsulation. */ + +static int read_key_sequence (Lisp_Object *, int, Lisp_Object, + bool, bool, bool, bool); +static void adjust_point_for_property (ptrdiff_t, bool); + +/* The last boundary auto-added to buffer-undo-list. */ +Lisp_Object last_undo_boundary; + +/* FIXME: This is wrong rather than test window-system, we should call + a new set-selection, which will then dispatch to x-set-selection, or + tty-set-selection, or w32-set-selection, ... */ + +Lisp_Object +command_loop_1 (void) +{ + Lisp_Object cmd; + Lisp_Object keybuf[30]; + int i; + EMACS_INT prev_modiff = 0; + struct buffer *prev_buffer = NULL; + bool already_adjusted = 0; + + kset_prefix_arg (current_kboard, Qnil); + kset_last_prefix_arg (current_kboard, Qnil); + Vdeactivate_mark = Qnil; + waiting_for_input = 0; + cancel_echoing (); + + this_command_key_count = 0; + this_command_key_count_reset = 0; + this_single_command_key_start = 0; + + if (NILP (Vmemory_full)) + { + /* Make sure this hook runs after commands that get errors and + throw to top level. */ + /* Note that the value cell will never directly contain nil + if the symbol is a local variable. */ + if (!NILP (Vpost_command_hook) && !NILP (Vrun_hooks)) + safe_run_hooks (Qpost_command_hook); + + /* If displaying a message, resize the echo area window to fit + that message's size exactly. */ + if (!NILP (echo_area_buffer[0])) + resize_echo_area_exactly (); + + /* If there are warnings waiting, process them. */ + if (!NILP (Vdelayed_warnings_list)) + safe_run_hooks (Qdelayed_warnings_hook); + + if (!NILP (Vdeferred_action_list)) + safe_run_hooks (Qdeferred_action_function); + } + + /* Do this after running Vpost_command_hook, for consistency. */ + kset_last_command (current_kboard, Vthis_command); + kset_real_last_command (current_kboard, Vreal_this_command); + if (!CONSP (last_command_event)) + kset_last_repeatable_command (current_kboard, Vreal_this_command); + + while (1) + { + if (! FRAME_LIVE_P (XFRAME (selected_frame))) + Fkill_emacs (Qnil); + + /* Make sure the current window's buffer is selected. */ + set_buffer_internal (XBUFFER (XWINDOW (selected_window)->contents)); + + /* Display any malloc warning that just came out. Use while because + displaying one warning can cause another. */ + + while (pending_malloc_warning) + display_malloc_warning (); + + Vdeactivate_mark = Qnil; + + /* Don't ignore mouse movements for more than a single command + loop. (This flag is set in xdisp.c whenever the tool bar is + resized, because the resize moves text up or down, and would + generate false mouse drag events if we don't ignore them.) */ + ignore_mouse_drag_p = 0; + + /* If minibuffer on and echo area in use, + wait a short time and redraw minibuffer. */ + + if (minibuf_level + && !NILP (echo_area_buffer[0]) + && EQ (minibuf_window, echo_area_window) + && NUMBERP (Vminibuffer_message_timeout)) + { + /* Bind inhibit-quit to t so that C-g gets read in + rather than quitting back to the minibuffer. */ + ptrdiff_t count = SPECPDL_INDEX (); + specbind (Qinhibit_quit, Qt); + + sit_for (Vminibuffer_message_timeout, 0, 2); + + /* Clear the echo area. */ + message1 (0); + safe_run_hooks (Qecho_area_clear_hook); + + unbind_to (count, Qnil); + + /* If a C-g came in before, treat it as input now. */ + if (!NILP (Vquit_flag)) + { + Vquit_flag = Qnil; + Vunread_command_events = list1 (make_number (quit_char)); + } + } + + /* If it has changed current-menubar from previous value, + really recompute the menubar from the value. */ + if (! NILP (Vlucid_menu_bar_dirty_flag) + && !NILP (Ffboundp (Qrecompute_lucid_menubar))) + call0 (Qrecompute_lucid_menubar); + + before_command_key_count = this_command_key_count; + before_command_echo_length = echo_length (); + + Vthis_command = Qnil; + Vreal_this_command = Qnil; + Vthis_original_command = Qnil; + Vthis_command_keys_shift_translated = Qnil; + + /* Read next key sequence; i gets its length. */ + i = read_key_sequence (keybuf, ARRAYELTS (keybuf), + Qnil, 0, 1, 1, 0); + + /* A filter may have run while we were reading the input. */ + if (! FRAME_LIVE_P (XFRAME (selected_frame))) + Fkill_emacs (Qnil); + set_buffer_internal (XBUFFER (XWINDOW (selected_window)->contents)); + + ++num_input_keys; + + /* Now we have read a key sequence of length I, + or else I is 0 and we found end of file. */ + + if (i == 0) /* End of file -- happens only in */ + return Qnil; /* a kbd macro, at the end. */ + /* -1 means read_key_sequence got a menu that was rejected. + Just loop around and read another command. */ + if (i == -1) + { + cancel_echoing (); + this_command_key_count = 0; + this_command_key_count_reset = 0; + this_single_command_key_start = 0; + goto finalize; + } + + last_command_event = keybuf[i - 1]; + + /* If the previous command tried to force a specific window-start, + forget about that, in case this command moves point far away + from that position. But also throw away beg_unchanged and + end_unchanged information in that case, so that redisplay will + update the whole window properly. */ + if (XWINDOW (selected_window)->force_start) + { + struct buffer *b; + XWINDOW (selected_window)->force_start = 0; + b = XBUFFER (XWINDOW (selected_window)->contents); + BUF_BEG_UNCHANGED (b) = BUF_END_UNCHANGED (b) = 0; + } + + cmd = read_key_sequence_cmd; + if (!NILP (Vexecuting_kbd_macro)) + { + if (!NILP (Vquit_flag)) + { + Vexecuting_kbd_macro = Qt; + QUIT; /* Make some noise. */ + /* Will return since macro now empty. */ + } + } + + /* Do redisplay processing after this command except in special + cases identified below. */ + prev_buffer = current_buffer; + prev_modiff = MODIFF; + last_point_position = PT; + + /* By default, we adjust point to a boundary of a region that + has such a property that should be treated intangible + (e.g. composition, display). But, some commands will set + this variable differently. */ + Vdisable_point_adjustment = Qnil; + + /* Process filters and timers may have messed with deactivate-mark. + reset it before we execute the command. */ + Vdeactivate_mark = Qnil; + + /* Remap command through active keymaps. */ + Vthis_original_command = cmd; + if (!NILP (read_key_sequence_remapped)) + cmd = read_key_sequence_remapped; + + /* Execute the command. */ + + { + total_keys += total_keys < NUM_RECENT_KEYS; + ASET (recent_keys, recent_keys_index, + Fcons (Qnil, cmd)); + if (++recent_keys_index >= NUM_RECENT_KEYS) + recent_keys_index = 0; + } + Vthis_command = cmd; + Vreal_this_command = cmd; + safe_run_hooks (Qpre_command_hook); + + already_adjusted = 0; + + if (NILP (Vthis_command)) + /* nil means key is undefined. */ + call0 (Qundefined); + else + { + /* Here for a command that isn't executed directly. */ + +#ifdef HAVE_WINDOW_SYSTEM + ptrdiff_t scount = SPECPDL_INDEX (); + + if (display_hourglass_p + && NILP (Vexecuting_kbd_macro)) + { + record_unwind_protect_void (cancel_hourglass); + start_hourglass (); + } +#endif + + if (NILP (KVAR (current_kboard, Vprefix_arg))) /* FIXME: Why? --Stef */ + { + Lisp_Object undo = BVAR (current_buffer, undo_list); + Fundo_boundary (); + last_undo_boundary + = (EQ (undo, BVAR (current_buffer, undo_list)) + ? Qnil : BVAR (current_buffer, undo_list)); + } + call1 (Qcommand_execute, Vthis_command); + +#ifdef HAVE_WINDOW_SYSTEM + /* Do not check display_hourglass_p here, because + `command-execute' could change it, but we should cancel + hourglass cursor anyway. + But don't cancel the hourglass within a macro + just because a command in the macro finishes. */ + if (NILP (Vexecuting_kbd_macro)) + unbind_to (scount, Qnil); +#endif + } + kset_last_prefix_arg (current_kboard, Vcurrent_prefix_arg); + + safe_run_hooks (Qpost_command_hook); + + /* If displaying a message, resize the echo area window to fit + that message's size exactly. */ + if (!NILP (echo_area_buffer[0])) + resize_echo_area_exactly (); + + /* If there are warnings waiting, process them. */ + if (!NILP (Vdelayed_warnings_list)) + safe_run_hooks (Qdelayed_warnings_hook); + + safe_run_hooks (Qdeferred_action_function); + + /* If there is a prefix argument, + 1) We don't want Vlast_command to be ``universal-argument'' + (that would be dumb), so don't set Vlast_command, + 2) we want to leave echoing on so that the prefix will be + echoed as part of this key sequence, so don't call + cancel_echoing, and + 3) we want to leave this_command_key_count non-zero, so that + read_char will realize that it is re-reading a character, and + not echo it a second time. + + If the command didn't actually create a prefix arg, + but is merely a frame event that is transparent to prefix args, + then the above doesn't apply. */ + if (NILP (KVAR (current_kboard, Vprefix_arg)) + || CONSP (last_command_event)) + { + kset_last_command (current_kboard, Vthis_command); + kset_real_last_command (current_kboard, Vreal_this_command); + if (!CONSP (last_command_event)) + kset_last_repeatable_command (current_kboard, Vreal_this_command); + cancel_echoing (); + this_command_key_count = 0; + this_command_key_count_reset = 0; + this_single_command_key_start = 0; + } + + if (!NILP (BVAR (current_buffer, mark_active)) + && !NILP (Vrun_hooks)) + { + /* In Emacs 22, setting transient-mark-mode to `only' was a + way of turning it on for just one command. This usage is + obsolete, but support it anyway. */ + if (EQ (Vtransient_mark_mode, Qidentity)) + Vtransient_mark_mode = Qnil; + else if (EQ (Vtransient_mark_mode, Qonly)) + Vtransient_mark_mode = Qidentity; + + if (!NILP (Vdeactivate_mark)) + /* If `select-active-regions' is non-nil, this call to + `deactivate-mark' also sets the PRIMARY selection. */ + call0 (Qdeactivate_mark); + else + { + /* Even if not deactivating the mark, set PRIMARY if + `select-active-regions' is non-nil. */ + if (!NILP (Fwindow_system (Qnil)) + /* Even if mark_active is non-nil, the actual buffer + marker may not have been set yet (Bug#7044). */ + && XMARKER (BVAR (current_buffer, mark))->buffer + && (EQ (Vselect_active_regions, Qonly) + ? EQ (CAR_SAFE (Vtransient_mark_mode), Qonly) + : (!NILP (Vselect_active_regions) + && !NILP (Vtransient_mark_mode))) + && NILP (Fmemq (Vthis_command, + Vselection_inhibit_update_commands))) + { + Lisp_Object txt + = call1 (Fsymbol_value (Qregion_extract_function), Qnil); + if (XINT (Flength (txt)) > 0) + /* Don't set empty selections. */ + call2 (Qgui_set_selection, QPRIMARY, txt); + } + + if (current_buffer != prev_buffer || MODIFF != prev_modiff) + run_hook (intern ("activate-mark-hook")); + } + + Vsaved_region_selection = Qnil; + } + + finalize: + + if (current_buffer == prev_buffer + && last_point_position != PT + && NILP (Vdisable_point_adjustment) + && NILP (Vglobal_disable_point_adjustment)) + { + if (last_point_position > BEGV + && last_point_position < ZV + && (composition_adjust_point (last_point_position, + last_point_position) + != last_point_position)) + /* The last point was temporarily set within a grapheme + cluster to prevent automatic composition. To recover + the automatic composition, we must update the + display. */ + windows_or_buffers_changed = 21; + if (!already_adjusted) + adjust_point_for_property (last_point_position, + MODIFF != prev_modiff); + } + + /* Install chars successfully executed in kbd macro. */ + + if (!NILP (KVAR (current_kboard, defining_kbd_macro)) + && NILP (KVAR (current_kboard, Vprefix_arg))) + finalize_kbd_macro_chars (); + } +} + +Lisp_Object +read_menu_command (void) +{ + Lisp_Object keybuf[30]; + ptrdiff_t count = SPECPDL_INDEX (); + int i; + + /* We don't want to echo the keystrokes while navigating the + menus. */ + specbind (Qecho_keystrokes, make_number (0)); + + i = read_key_sequence (keybuf, ARRAYELTS (keybuf), + Qnil, 0, 1, 1, 1); + + unbind_to (count, Qnil); + + if (! FRAME_LIVE_P (XFRAME (selected_frame))) + Fkill_emacs (Qnil); + if (i == 0 || i == -1) + return Qt; + + return read_key_sequence_cmd; +} + +/* Adjust point to a boundary of a region that has such a property + that should be treated intangible. For the moment, we check + `composition', `display' and `invisible' properties. + LAST_PT is the last position of point. */ + +static void +adjust_point_for_property (ptrdiff_t last_pt, bool modified) +{ + ptrdiff_t beg, end; + Lisp_Object val, overlay, tmp; + /* When called after buffer modification, we should temporarily + suppress the point adjustment for automatic composition so that a + user can keep inserting another character at point or keep + deleting characters around point. */ + bool check_composition = ! modified, check_display = 1, check_invisible = 1; + ptrdiff_t orig_pt = PT; + + /* FIXME: cycling is probably not necessary because these properties + can't be usefully combined anyway. */ + while (check_composition || check_display || check_invisible) + { + /* FIXME: check `intangible'. */ + if (check_composition + && PT > BEGV && PT < ZV + && (beg = composition_adjust_point (last_pt, PT)) != PT) + { + SET_PT (beg); + check_display = check_invisible = 1; + } + check_composition = 0; + if (check_display + && PT > BEGV && PT < ZV + && !NILP (val = get_char_property_and_overlay + (make_number (PT), Qdisplay, Qnil, &overlay)) + && display_prop_intangible_p (val, overlay, PT, PT_BYTE) + && (!OVERLAYP (overlay) + ? get_property_and_range (PT, Qdisplay, &val, &beg, &end, Qnil) + : (beg = OVERLAY_POSITION (OVERLAY_START (overlay)), + end = OVERLAY_POSITION (OVERLAY_END (overlay)))) + && (beg < PT /* && end > PT <- It's always the case. */ + || (beg <= PT && STRINGP (val) && SCHARS (val) == 0))) + { + eassert (end > PT); + SET_PT (PT < last_pt + ? (STRINGP (val) && SCHARS (val) == 0 + ? max (beg - 1, BEGV) + : beg) + : end); + check_composition = check_invisible = 1; + } + check_display = 0; + if (check_invisible && PT > BEGV && PT < ZV) + { + int inv; + bool ellipsis = 0; + beg = end = PT; + + /* Find boundaries `beg' and `end' of the invisible area, if any. */ + while (end < ZV +#if 0 + /* FIXME: We should stop if we find a spot between + two runs of `invisible' where inserted text would + be visible. This is important when we have two + invisible boundaries that enclose an area: if the + area is empty, we need this test in order to make + it possible to place point in the middle rather + than skip both boundaries. However, this code + also stops anywhere in a non-sticky text-property, + which breaks (e.g.) Org mode. */ + && (val = Fget_pos_property (make_number (end), + Qinvisible, Qnil), + TEXT_PROP_MEANS_INVISIBLE (val)) +#endif + && !NILP (val = get_char_property_and_overlay + (make_number (end), Qinvisible, Qnil, &overlay)) + && (inv = TEXT_PROP_MEANS_INVISIBLE (val))) + { + ellipsis = ellipsis || inv > 1 + || (OVERLAYP (overlay) + && (!NILP (Foverlay_get (overlay, Qafter_string)) + || !NILP (Foverlay_get (overlay, Qbefore_string)))); + tmp = Fnext_single_char_property_change + (make_number (end), Qinvisible, Qnil, Qnil); + end = NATNUMP (tmp) ? XFASTINT (tmp) : ZV; + } + while (beg > BEGV +#if 0 + && (val = Fget_pos_property (make_number (beg), + Qinvisible, Qnil), + TEXT_PROP_MEANS_INVISIBLE (val)) +#endif + && !NILP (val = get_char_property_and_overlay + (make_number (beg - 1), Qinvisible, Qnil, &overlay)) + && (inv = TEXT_PROP_MEANS_INVISIBLE (val))) + { + ellipsis = ellipsis || inv > 1 + || (OVERLAYP (overlay) + && (!NILP (Foverlay_get (overlay, Qafter_string)) + || !NILP (Foverlay_get (overlay, Qbefore_string)))); + tmp = Fprevious_single_char_property_change + (make_number (beg), Qinvisible, Qnil, Qnil); + beg = NATNUMP (tmp) ? XFASTINT (tmp) : BEGV; + } + + /* Move away from the inside area. */ + if (beg < PT && end > PT) + { + SET_PT ((orig_pt == PT && (last_pt < beg || last_pt > end)) + /* We haven't moved yet (so we don't need to fear + infinite-looping) and we were outside the range + before (so either end of the range still corresponds + to a move in the right direction): pretend we moved + less than we actually did, so that we still have + more freedom below in choosing which end of the range + to go to. */ + ? (orig_pt = -1, PT < last_pt ? end : beg) + /* We either have moved already or the last point + was already in the range: we don't get to choose + which end of the range we have to go to. */ + : (PT < last_pt ? beg : end)); + check_composition = check_display = 1; + } +#if 0 /* This assertion isn't correct, because SET_PT may end up setting + the point to something other than its argument, due to + point-motion hooks, intangibility, etc. */ + eassert (PT == beg || PT == end); +#endif + + /* Pretend the area doesn't exist if the buffer is not + modified. */ + if (!modified && !ellipsis && beg < end) + { + if (last_pt == beg && PT == end && end < ZV) + (check_composition = check_display = 1, SET_PT (end + 1)); + else if (last_pt == end && PT == beg && beg > BEGV) + (check_composition = check_display = 1, SET_PT (beg - 1)); + else if (PT == ((PT < last_pt) ? beg : end)) + /* We've already moved as far as we can. Trying to go + to the other end would mean moving backwards and thus + could lead to an infinite loop. */ + ; + else if (val = Fget_pos_property (make_number (PT), + Qinvisible, Qnil), + TEXT_PROP_MEANS_INVISIBLE (val) + && (val = (Fget_pos_property + (make_number (PT == beg ? end : beg), + Qinvisible, Qnil)), + !TEXT_PROP_MEANS_INVISIBLE (val))) + (check_composition = check_display = 1, + SET_PT (PT == beg ? end : beg)); + } + } + check_invisible = 0; + } +} + +/* Subroutine for safe_run_hooks: run the hook, which is ARGS[1]. */ + +static Lisp_Object +safe_run_hooks_1 (ptrdiff_t nargs, Lisp_Object *args) +{ + eassert (nargs == 2); + return call0 (args[1]); +} + +/* Subroutine for safe_run_hooks: handle an error by clearing out the function + from the hook. */ + +static Lisp_Object +safe_run_hooks_error (Lisp_Object error, ptrdiff_t nargs, Lisp_Object *args) +{ + eassert (nargs == 2); + AUTO_STRING (format, "Error in %s (%S): %S"); + Lisp_Object hook = args[0]; + Lisp_Object fun = args[1]; + CALLN (Fmessage, format, hook, fun, error); + + if (SYMBOLP (hook)) + { + Lisp_Object val; + bool found = 0; + Lisp_Object newval = Qnil; + for (val = find_symbol_value (hook); CONSP (val); val = XCDR (val)) + if (EQ (fun, XCAR (val))) + found = 1; + else + newval = Fcons (XCAR (val), newval); + if (found) + return Fset (hook, Fnreverse (newval)); + /* Not found in the local part of the hook. Let's look at the global + part. */ + newval = Qnil; + for (val = (NILP (Fdefault_boundp (hook)) ? Qnil + : Fdefault_value (hook)); + CONSP (val); val = XCDR (val)) + if (EQ (fun, XCAR (val))) + found = 1; + else + newval = Fcons (XCAR (val), newval); + if (found) + return Fset_default (hook, Fnreverse (newval)); + } + return Qnil; +} + +static Lisp_Object +safe_run_hook_funcall (ptrdiff_t nargs, Lisp_Object *args) +{ + eassert (nargs == 2); + /* Yes, run_hook_with_args works with args in the other order. */ + internal_condition_case_n (safe_run_hooks_1, + 2, ((Lisp_Object []) {args[1], args[0]}), + Qt, safe_run_hooks_error); + return Qnil; +} + +/* If we get an error while running the hook, cause the hook variable + to be nil. Also inhibit quits, so that C-g won't cause the hook + to mysteriously evaporate. */ + +void +safe_run_hooks (Lisp_Object hook) +{ + struct gcpro gcpro1; + ptrdiff_t count = SPECPDL_INDEX (); + + GCPRO1 (hook); + specbind (Qinhibit_quit, Qt); + run_hook_with_args (2, ((Lisp_Object []) {hook, hook}), safe_run_hook_funcall); + unbind_to (count, Qnil); + UNGCPRO; +} + + +/* Nonzero means polling for input is temporarily suppressed. */ + +int poll_suppress_count; + + +#ifdef POLL_FOR_INPUT + +/* Asynchronous timer for polling. */ + +static struct atimer *poll_timer; + +/* Poll for input, so that we catch a C-g if it comes in. */ +void +poll_for_input_1 (void) +{ + if (! input_blocked_p () + && !waiting_for_input) + gobble_input (); +} + +/* Timer callback function for poll_timer. TIMER is equal to + poll_timer. */ + +static void +poll_for_input (struct atimer *timer) +{ + if (poll_suppress_count == 0) + pending_signals = 1; +} + +#endif /* POLL_FOR_INPUT */ + +/* Begin signals to poll for input, if they are appropriate. + This function is called unconditionally from various places. */ + +void +start_polling (void) +{ +#ifdef POLL_FOR_INPUT + /* XXX This condition was (read_socket_hook && !interrupt_input), + but read_socket_hook is not global anymore. Let's pretend that + it's always set. */ + if (!interrupt_input) + { + /* Turn alarm handling on unconditionally. It might have + been turned off in process.c. */ + turn_on_atimers (1); + + /* If poll timer doesn't exist, or we need one with + a different interval, start a new one. */ + if (poll_timer == NULL + || poll_timer->interval.tv_sec != polling_period) + { + time_t period = max (1, min (polling_period, TYPE_MAXIMUM (time_t))); + struct timespec interval = make_timespec (period, 0); + + if (poll_timer) + cancel_atimer (poll_timer); + + poll_timer = start_atimer (ATIMER_CONTINUOUS, interval, + poll_for_input, NULL); + } + + /* Let the timer's callback function poll for input + if this becomes zero. */ + --poll_suppress_count; + } +#endif +} + +/* True if we are using polling to handle input asynchronously. */ + +bool +input_polling_used (void) +{ +#ifdef POLL_FOR_INPUT + /* XXX This condition was (read_socket_hook && !interrupt_input), + but read_socket_hook is not global anymore. Let's pretend that + it's always set. */ + return !interrupt_input; +#else + return 0; +#endif +} + +/* Turn off polling. */ + +void +stop_polling (void) +{ +#ifdef POLL_FOR_INPUT + /* XXX This condition was (read_socket_hook && !interrupt_input), + but read_socket_hook is not global anymore. Let's pretend that + it's always set. */ + if (!interrupt_input) + ++poll_suppress_count; +#endif +} + +/* Set the value of poll_suppress_count to COUNT + and start or stop polling accordingly. */ + +void +set_poll_suppress_count (int count) +{ +#ifdef POLL_FOR_INPUT + if (count == 0 && poll_suppress_count != 0) + { + poll_suppress_count = 1; + start_polling (); + } + else if (count != 0 && poll_suppress_count == 0) + { + stop_polling (); + } + poll_suppress_count = count; +#endif +} + +/* Bind polling_period to a value at least N. + But don't decrease it. */ + +void +bind_polling_period (int n) +{ +#ifdef POLL_FOR_INPUT + EMACS_INT new = polling_period; + + if (n > new) + new = n; + + stop_other_atimers (poll_timer); + stop_polling (); + specbind (Qpolling_period, make_number (new)); + /* Start a new alarm with the new period. */ + start_polling (); +#endif +} + +/* Apply the control modifier to CHARACTER. */ + +int +make_ctrl_char (int c) +{ + /* Save the upper bits here. */ + int upper = c & ~0177; + + if (! ASCII_CHAR_P (c)) + return c |= ctrl_modifier; + + c &= 0177; + + /* Everything in the columns containing the upper-case letters + denotes a control character. */ + if (c >= 0100 && c < 0140) + { + int oc = c; + c &= ~0140; + /* Set the shift modifier for a control char + made from a shifted letter. But only for letters! */ + if (oc >= 'A' && oc <= 'Z') + c |= shift_modifier; + } + + /* The lower-case letters denote control characters too. */ + else if (c >= 'a' && c <= 'z') + c &= ~0140; + + /* Include the bits for control and shift + only if the basic ASCII code can't indicate them. */ + else if (c >= ' ') + c |= ctrl_modifier; + + /* Replace the high bits. */ + c |= (upper & ~ctrl_modifier); + + return c; +} + +/* Display the help-echo property of the character after the mouse pointer. + Either show it in the echo area, or call show-help-function to display + it by other means (maybe in a tooltip). + + If HELP is nil, that means clear the previous help echo. + + If HELP is a string, display that string. If HELP is a function, + call it with OBJECT and POS as arguments; the function should + return a help string or nil for none. For all other types of HELP, + evaluate it to obtain a string. + + WINDOW is the window in which the help was generated, if any. + It is nil if not in a window. + + If OBJECT is a buffer, POS is the position in the buffer where the + `help-echo' text property was found. + + If OBJECT is an overlay, that overlay has a `help-echo' property, + and POS is the position in the overlay's buffer under the mouse. + + If OBJECT is a string (an overlay string or a string displayed with + the `display' property). POS is the position in that string under + the mouse. + + Note: this function may only be called with HELP nil or a string + from X code running asynchronously. */ + +void +show_help_echo (Lisp_Object help, Lisp_Object window, Lisp_Object object, + Lisp_Object pos) +{ + if (!NILP (help) && !STRINGP (help)) + { + if (FUNCTIONP (help)) + help = safe_call (4, help, window, object, pos); + else + help = safe_eval (help); + + if (!STRINGP (help)) + return; + } + + if (!noninteractive && STRINGP (help)) + { + /* The mouse-fixup-help-message Lisp function can call + mouse_position_hook, which resets the mouse_moved flags. + This causes trouble if we are trying to read a mouse motion + event (i.e., if we are inside a `track-mouse' form), so we + restore the mouse_moved flag. */ + struct frame *f = NILP (do_mouse_tracking) ? NULL : some_mouse_moved (); + help = call1 (Qmouse_fixup_help_message, help); + if (f) + f->mouse_moved = 1; + } + + if (STRINGP (help) || NILP (help)) + { + if (!NILP (Vshow_help_function)) + call1 (Vshow_help_function, help); + help_echo_showing_p = STRINGP (help); + } +} + + + +/* Input of single characters from keyboard. */ + +static Lisp_Object kbd_buffer_get_event (KBOARD **kbp, bool *used_mouse_menu, + struct timespec *end_time); +static void record_char (Lisp_Object c); + +static Lisp_Object help_form_saved_window_configs; +static void +read_char_help_form_unwind (void) +{ + Lisp_Object window_config = XCAR (help_form_saved_window_configs); + help_form_saved_window_configs = XCDR (help_form_saved_window_configs); + if (!NILP (window_config)) + Fset_window_configuration (window_config); +} + +#define STOP_POLLING \ +do { if (! polling_stopped_here) stop_polling (); \ + polling_stopped_here = 1; } while (0) + +#define RESUME_POLLING \ +do { if (polling_stopped_here) start_polling (); \ + polling_stopped_here = 0; } while (0) + +static Lisp_Object +read_event_from_main_queue (struct timespec *end_time, + sys_jmp_buf local_getcjmp, + bool *used_mouse_menu) +{ + Lisp_Object c = Qnil; + sys_jmp_buf save_jump; + KBOARD *kb IF_LINT (= NULL); + + start: + + /* Read from the main queue, and if that gives us something we can't use yet, + we put it on the appropriate side queue and try again. */ + + if (end_time && timespec_cmp (*end_time, current_timespec ()) <= 0) + return c; + + /* Actually read a character, waiting if necessary. */ + save_getcjmp (save_jump); + restore_getcjmp (local_getcjmp); + if (!end_time) + timer_start_idle (); + c = kbd_buffer_get_event (&kb, used_mouse_menu, end_time); + restore_getcjmp (save_jump); + + if (! NILP (c) && (kb != current_kboard)) + { + Lisp_Object last = KVAR (kb, kbd_queue); + if (CONSP (last)) + { + while (CONSP (XCDR (last))) + last = XCDR (last); + if (!NILP (XCDR (last))) + emacs_abort (); + } + if (!CONSP (last)) + kset_kbd_queue (kb, list1 (c)); + else + XSETCDR (last, list1 (c)); + kb->kbd_queue_has_data = 1; + c = Qnil; + if (single_kboard) + goto start; + current_kboard = kb; + /* This is going to exit from read_char + so we had better get rid of this frame's stuff. */ + return make_number (-2); + } + + /* Terminate Emacs in batch mode if at eof. */ + if (noninteractive && INTEGERP (c) && XINT (c) < 0) + Fkill_emacs (make_number (1)); + + if (INTEGERP (c)) + { + /* Add in any extra modifiers, where appropriate. */ + if ((extra_keyboard_modifiers & CHAR_CTL) + || ((extra_keyboard_modifiers & 0177) < ' ' + && (extra_keyboard_modifiers & 0177) != 0)) + XSETINT (c, make_ctrl_char (XINT (c))); + + /* Transfer any other modifier bits directly from + extra_keyboard_modifiers to c. Ignore the actual character code + in the low 16 bits of extra_keyboard_modifiers. */ + XSETINT (c, XINT (c) | (extra_keyboard_modifiers & ~0xff7f & ~CHAR_CTL)); + } + + return c; +} + + + +/* Like `read_event_from_main_queue' but applies keyboard-coding-system + to tty input. */ +static Lisp_Object +read_decoded_event_from_main_queue (struct timespec *end_time, + sys_jmp_buf local_getcjmp, + Lisp_Object prev_event, + bool *used_mouse_menu) +{ +#define MAX_ENCODED_BYTES 16 +#ifndef WINDOWSNT + Lisp_Object events[MAX_ENCODED_BYTES]; + int n = 0; +#endif + while (true) + { + Lisp_Object nextevt + = read_event_from_main_queue (end_time, local_getcjmp, + used_mouse_menu); +#ifdef WINDOWSNT + /* w32_console already returns decoded events. It either reads + Unicode characters from the Windows keyboard input, or + converts characters encoded in the current codepage into + Unicode. See w32inevt.c:key_event, near its end. */ + return nextevt; +#else + struct frame *frame = XFRAME (selected_frame); + struct terminal *terminal = frame->terminal; + if (!((FRAME_TERMCAP_P (frame) || FRAME_MSDOS_P (frame)) + /* Don't apply decoding if we're just reading a raw event + (e.g. reading bytes sent by the xterm to specify the position + of a mouse click). */ + && (!EQ (prev_event, Qt)) + && (TERMINAL_KEYBOARD_CODING (terminal)->common_flags + & CODING_REQUIRE_DECODING_MASK))) + return nextevt; /* No decoding needed. */ + else + { + int meta_key = terminal->display_info.tty->meta_key; + eassert (n < MAX_ENCODED_BYTES); + events[n++] = nextevt; + if (NATNUMP (nextevt) + && XINT (nextevt) < (meta_key == 1 ? 0x80 : 0x100)) + { /* An encoded byte sequence, let's try to decode it. */ + struct coding_system *coding + = TERMINAL_KEYBOARD_CODING (terminal); + + if (raw_text_coding_system_p (coding)) + { + int i; + if (meta_key != 2) + for (i = 0; i < n; i++) + events[i] = make_number (XINT (events[i]) & ~0x80); + } + else + { + unsigned char src[MAX_ENCODED_BYTES]; + unsigned char dest[MAX_ENCODED_BYTES * MAX_MULTIBYTE_LENGTH]; + int i; + for (i = 0; i < n; i++) + src[i] = XINT (events[i]); + if (meta_key != 2) + for (i = 0; i < n; i++) + src[i] &= ~0x80; + coding->destination = dest; + coding->dst_bytes = sizeof dest; + decode_coding_c_string (coding, src, n, Qnil); + eassert (coding->produced_char <= n); + if (coding->produced_char == 0) + { /* The encoded sequence is incomplete. */ + if (n < MAX_ENCODED_BYTES) /* Avoid buffer overflow. */ + continue; /* Read on! */ + } + else + { + const unsigned char *p = coding->destination; + eassert (coding->carryover_bytes == 0); + n = 0; + while (n < coding->produced_char) + events[n++] = make_number (STRING_CHAR_ADVANCE (p)); + } + } + } + /* Now `events' should hold decoded events. + Normally, n should be equal to 1, but better not rely on it. + We can only return one event here, so return the first we + had and keep the others (if any) for later. */ + while (n > 1) + Vunread_command_events + = Fcons (events[--n], Vunread_command_events); + return events[0]; + } +#endif + } +} + +static bool +echo_keystrokes_p (void) +{ + return (FLOATP (Vecho_keystrokes) ? XFLOAT_DATA (Vecho_keystrokes) > 0.0 + : INTEGERP (Vecho_keystrokes) ? XINT (Vecho_keystrokes) > 0 : false); +} + +/* Read a character from the keyboard; call the redisplay if needed. */ +/* commandflag 0 means do not autosave, but do redisplay. + -1 means do not redisplay, but do autosave. + -2 means do neither. + 1 means do both. + + The argument MAP is a keymap for menu prompting. + + PREV_EVENT is the previous input event, or nil if we are reading + the first event of a key sequence (or not reading a key sequence). + If PREV_EVENT is t, that is a "magic" value that says + not to run input methods, but in other respects to act as if + not reading a key sequence. + + If USED_MOUSE_MENU is non-null, then set *USED_MOUSE_MENU to true + if we used a mouse menu to read the input, or false otherwise. If + USED_MOUSE_MENU is null, don't dereference it. + + Value is -2 when we find input on another keyboard. A second call + to read_char will read it. + + If END_TIME is non-null, it is a pointer to a struct timespec + specifying the maximum time to wait until. If no input arrives by + that time, stop waiting and return nil. + + Value is t if we showed a menu and the user rejected it. */ + +Lisp_Object +read_char (int commandflag, Lisp_Object map, + Lisp_Object prev_event, + bool *used_mouse_menu, struct timespec *end_time) +{ + Lisp_Object c; + ptrdiff_t jmpcount; + sys_jmp_buf local_getcjmp; + sys_jmp_buf save_jump; + Lisp_Object tem, save; + volatile Lisp_Object previous_echo_area_message; + volatile Lisp_Object also_record; + volatile bool reread; + struct gcpro gcpro1, gcpro2; + bool volatile polling_stopped_here = 0; + struct kboard *orig_kboard = current_kboard; + + also_record = Qnil; + +#if 0 /* This was commented out as part of fixing echo for C-u left. */ + before_command_key_count = this_command_key_count; + before_command_echo_length = echo_length (); +#endif + c = Qnil; + previous_echo_area_message = Qnil; + + GCPRO2 (c, previous_echo_area_message); + + retry: + + if (CONSP (Vunread_post_input_method_events)) + { + c = XCAR (Vunread_post_input_method_events); + Vunread_post_input_method_events + = XCDR (Vunread_post_input_method_events); + + /* Undo what read_char_x_menu_prompt did when it unread + additional keys returned by Fx_popup_menu. */ + if (CONSP (c) + && (SYMBOLP (XCAR (c)) || INTEGERP (XCAR (c))) + && NILP (XCDR (c))) + c = XCAR (c); + + reread = true; + goto reread_first; + } + else + reread = false; + + + if (CONSP (Vunread_command_events)) + { + bool was_disabled = 0; + + c = XCAR (Vunread_command_events); + Vunread_command_events = XCDR (Vunread_command_events); + + /* Undo what sit-for did when it unread additional keys + inside universal-argument. */ + + if (CONSP (c) && EQ (XCAR (c), Qt)) + c = XCDR (c); + else + reread = true; + + /* Undo what read_char_x_menu_prompt did when it unread + additional keys returned by Fx_popup_menu. */ + if (CONSP (c) + && EQ (XCDR (c), Qdisabled) + && (SYMBOLP (XCAR (c)) || INTEGERP (XCAR (c)))) + { + was_disabled = 1; + c = XCAR (c); + } + + /* If the queued event is something that used the mouse, + set used_mouse_menu accordingly. */ + if (used_mouse_menu + /* Also check was_disabled so last-nonmenu-event won't return + a bad value when submenus are involved. (Bug#447) */ + && (EQ (c, Qtool_bar) || EQ (c, Qmenu_bar) || was_disabled)) + *used_mouse_menu = 1; + + goto reread_for_input_method; + } + + if (CONSP (Vunread_input_method_events)) + { + c = XCAR (Vunread_input_method_events); + Vunread_input_method_events = XCDR (Vunread_input_method_events); + + /* Undo what read_char_x_menu_prompt did when it unread + additional keys returned by Fx_popup_menu. */ + if (CONSP (c) + && (SYMBOLP (XCAR (c)) || INTEGERP (XCAR (c))) + && NILP (XCDR (c))) + c = XCAR (c); + reread = true; + goto reread_for_input_method; + } + + this_command_key_count_reset = 0; + + if (!NILP (Vexecuting_kbd_macro)) + { + /* We set this to Qmacro; since that's not a frame, nobody will + try to switch frames on us, and the selected window will + remain unchanged. + + Since this event came from a macro, it would be misleading to + leave internal_last_event_frame set to wherever the last + real event came from. Normally, a switch-frame event selects + internal_last_event_frame after each command is read, but + events read from a macro should never cause a new frame to be + selected. */ + Vlast_event_frame = internal_last_event_frame = Qmacro; + + /* Exit the macro if we are at the end. + Also, some things replace the macro with t + to force an early exit. */ + if (EQ (Vexecuting_kbd_macro, Qt) + || executing_kbd_macro_index >= XFASTINT (Flength (Vexecuting_kbd_macro))) + { + XSETINT (c, -1); + goto exit; + } + + c = Faref (Vexecuting_kbd_macro, make_number (executing_kbd_macro_index)); + if (STRINGP (Vexecuting_kbd_macro) + && (XFASTINT (c) & 0x80) && (XFASTINT (c) <= 0xff)) + XSETFASTINT (c, CHAR_META | (XFASTINT (c) & ~0x80)); + + executing_kbd_macro_index++; + + goto from_macro; + } + + if (!NILP (unread_switch_frame)) + { + c = unread_switch_frame; + unread_switch_frame = Qnil; + + /* This event should make it into this_command_keys, and get echoed + again, so we do not set `reread'. */ + goto reread_first; + } + + /* If redisplay was requested. */ + if (commandflag >= 0) + { + bool echo_current = EQ (echo_message_buffer, echo_area_buffer[0]); + + /* If there is pending input, process any events which are not + user-visible, such as X selection_request events. */ + if (input_pending + || detect_input_pending_run_timers (0)) + swallow_events (false); /* May clear input_pending. */ + + /* Redisplay if no pending input. */ + while (!(input_pending + && (input_was_pending || !redisplay_dont_pause))) + { + input_was_pending = input_pending; + if (help_echo_showing_p && !EQ (selected_window, minibuf_window)) + redisplay_preserve_echo_area (5); + else + redisplay (); + + if (!input_pending) + /* Normal case: no input arrived during redisplay. */ + break; + + /* Input arrived and pre-empted redisplay. + Process any events which are not user-visible. */ + swallow_events (false); + /* If that cleared input_pending, try again to redisplay. */ + } + + /* Prevent the redisplay we just did + from messing up echoing of the input after the prompt. */ + if (commandflag == 0 && echo_current) + echo_message_buffer = echo_area_buffer[0]; + + } + + /* Message turns off echoing unless more keystrokes turn it on again. + + The code in 20.x for the condition was + + 1. echo_area_glyphs && *echo_area_glyphs + 2. && echo_area_glyphs != current_kboard->echobuf + 3. && ok_to_echo_at_next_pause != echo_area_glyphs + + (1) means there's a current message displayed + + (2) means it's not the message from echoing from the current + kboard. + + (3) There's only one place in 20.x where ok_to_echo_at_next_pause + is set to a non-null value. This is done in read_char and it is + set to echo_area_glyphs after a call to echo_char. That means + ok_to_echo_at_next_pause is either null or + current_kboard->echobuf with the appropriate current_kboard at + that time. + + So, condition (3) means in clear text ok_to_echo_at_next_pause + must be either null, or the current message isn't from echoing at + all, or it's from echoing from a different kboard than the + current one. */ + + if (/* There currently is something in the echo area. */ + !NILP (echo_area_buffer[0]) + && (/* It's an echo from a different kboard. */ + echo_kboard != current_kboard + /* Or we explicitly allow overwriting whatever there is. */ + || ok_to_echo_at_next_pause == NULL)) + cancel_echoing (); + else + echo_dash (); + + /* Try reading a character via menu prompting in the minibuf. + Try this before the sit-for, because the sit-for + would do the wrong thing if we are supposed to do + menu prompting. If EVENT_HAS_PARAMETERS then we are reading + after a mouse event so don't try a minibuf menu. */ + c = Qnil; + if (KEYMAPP (map) && INTERACTIVE + && !NILP (prev_event) && ! EVENT_HAS_PARAMETERS (prev_event) + /* Don't bring up a menu if we already have another event. */ + && NILP (Vunread_command_events) + && !detect_input_pending_run_timers (0)) + { + c = read_char_minibuf_menu_prompt (commandflag, map); + + if (INTEGERP (c) && XINT (c) == -2) + return c; /* wrong_kboard_jmpbuf */ + + if (! NILP (c)) + goto exit; + } + + /* Make a longjmp point for quits to use, but don't alter getcjmp just yet. + We will do that below, temporarily for short sections of code, + when appropriate. local_getcjmp must be in effect + around any call to sit_for or kbd_buffer_get_event; + it *must not* be in effect when we call redisplay. */ + + jmpcount = SPECPDL_INDEX (); + if (sys_setjmp (local_getcjmp)) + { + /* Handle quits while reading the keyboard. */ + /* We must have saved the outer value of getcjmp here, + so restore it now. */ + restore_getcjmp (save_jump); + pthread_sigmask (SIG_SETMASK, &empty_mask, 0); + unbind_to (jmpcount, Qnil); + XSETINT (c, quit_char); + internal_last_event_frame = selected_frame; + Vlast_event_frame = internal_last_event_frame; + /* If we report the quit char as an event, + don't do so more than once. */ + if (!NILP (Vinhibit_quit)) + Vquit_flag = Qnil; + + { + KBOARD *kb = FRAME_KBOARD (XFRAME (selected_frame)); + if (kb != current_kboard) + { + Lisp_Object last = KVAR (kb, kbd_queue); + /* We shouldn't get here if we were in single-kboard mode! */ + if (single_kboard) + emacs_abort (); + if (CONSP (last)) + { + while (CONSP (XCDR (last))) + last = XCDR (last); + if (!NILP (XCDR (last))) + emacs_abort (); + } + if (!CONSP (last)) + kset_kbd_queue (kb, list1 (c)); + else + XSETCDR (last, list1 (c)); + kb->kbd_queue_has_data = 1; + current_kboard = kb; + /* This is going to exit from read_char + so we had better get rid of this frame's stuff. */ + UNGCPRO; + return make_number (-2); /* wrong_kboard_jmpbuf */ + } + } + goto non_reread; + } + + /* Start idle timers if no time limit is supplied. We don't do it + if a time limit is supplied to avoid an infinite recursion in the + situation where an idle timer calls `sit-for'. */ + + if (!end_time) + timer_start_idle (); + + /* If in middle of key sequence and minibuffer not active, + start echoing if enough time elapses. */ + + if (minibuf_level == 0 + && !end_time + && !current_kboard->immediate_echo + && this_command_key_count > 0 + && ! noninteractive + && echo_keystrokes_p () + && (/* No message. */ + NILP (echo_area_buffer[0]) + /* Or empty message. */ + || (BUF_BEG (XBUFFER (echo_area_buffer[0])) + == BUF_Z (XBUFFER (echo_area_buffer[0]))) + /* Or already echoing from same kboard. */ + || (echo_kboard && ok_to_echo_at_next_pause == echo_kboard) + /* Or not echoing before and echoing allowed. */ + || (!echo_kboard && ok_to_echo_at_next_pause))) + { + /* After a mouse event, start echoing right away. + This is because we are probably about to display a menu, + and we don't want to delay before doing so. */ + if (EVENT_HAS_PARAMETERS (prev_event)) + echo_now (); + else + { + Lisp_Object tem0; + + save_getcjmp (save_jump); + restore_getcjmp (local_getcjmp); + tem0 = sit_for (Vecho_keystrokes, 1, 1); + restore_getcjmp (save_jump); + if (EQ (tem0, Qt) + && ! CONSP (Vunread_command_events)) + echo_now (); + } + } + + /* Maybe auto save due to number of keystrokes. */ + + if (commandflag != 0 && commandflag != -2 + && auto_save_interval > 0 + && num_nonmacro_input_events - last_auto_save > max (auto_save_interval, 20) + && !detect_input_pending_run_timers (0)) + { + Fdo_auto_save (Qnil, Qnil); + /* Hooks can actually change some buffers in auto save. */ + redisplay (); + } + + /* Try reading using an X menu. + This is never confused with reading using the minibuf + because the recursive call of read_char in read_char_minibuf_menu_prompt + does not pass on any keymaps. */ + + if (KEYMAPP (map) && INTERACTIVE + && !NILP (prev_event) + && EVENT_HAS_PARAMETERS (prev_event) + && !EQ (XCAR (prev_event), Qmenu_bar) + && !EQ (XCAR (prev_event), Qtool_bar) + /* Don't bring up a menu if we already have another event. */ + && NILP (Vunread_command_events)) + { + c = read_char_x_menu_prompt (map, prev_event, used_mouse_menu); + + /* Now that we have read an event, Emacs is not idle. */ + if (!end_time) + timer_stop_idle (); + + goto exit; + } + + /* Maybe autosave and/or garbage collect due to idleness. */ + + if (INTERACTIVE && NILP (c)) + { + int delay_level; + ptrdiff_t buffer_size; + + /* Slow down auto saves logarithmically in size of current buffer, + and garbage collect while we're at it. */ + if (! MINI_WINDOW_P (XWINDOW (selected_window))) + last_non_minibuf_size = Z - BEG; + buffer_size = (last_non_minibuf_size >> 8) + 1; + delay_level = 0; + while (buffer_size > 64) + delay_level++, buffer_size -= buffer_size >> 2; + if (delay_level < 4) delay_level = 4; + /* delay_level is 4 for files under around 50k, 7 at 100k, + 9 at 200k, 11 at 300k, and 12 at 500k. It is 15 at 1 meg. */ + + /* Auto save if enough time goes by without input. */ + if (commandflag != 0 && commandflag != -2 + && num_nonmacro_input_events > last_auto_save + && INTEGERP (Vauto_save_timeout) + && XINT (Vauto_save_timeout) > 0) + { + Lisp_Object tem0; + EMACS_INT timeout = XFASTINT (Vauto_save_timeout); + + timeout = min (timeout, MOST_POSITIVE_FIXNUM / delay_level * 4); + timeout = delay_level * timeout / 4; + save_getcjmp (save_jump); + restore_getcjmp (local_getcjmp); + tem0 = sit_for (make_number (timeout), 1, 1); + restore_getcjmp (save_jump); + + if (EQ (tem0, Qt) + && ! CONSP (Vunread_command_events)) + { + Fdo_auto_save (Qnil, Qnil); + redisplay (); + } + } + + /* If there is still no input available, ask for GC. */ + if (!detect_input_pending_run_timers (0)) + maybe_gc (); + } + + /* Notify the caller if an autosave hook, or a timer, sentinel or + filter in the sit_for calls above have changed the current + kboard. This could happen if they use the minibuffer or start a + recursive edit, like the fancy splash screen in server.el's + filter. If this longjmp wasn't here, read_key_sequence would + interpret the next key sequence using the wrong translation + tables and function keymaps. */ + if (NILP (c) && current_kboard != orig_kboard) + { + UNGCPRO; + return make_number (-2); /* wrong_kboard_jmpbuf */ + } + + /* If this has become non-nil here, it has been set by a timer + or sentinel or filter. */ + if (CONSP (Vunread_command_events)) + { + c = XCAR (Vunread_command_events); + Vunread_command_events = XCDR (Vunread_command_events); + + if (CONSP (c) && EQ (XCAR (c), Qt)) + c = XCDR (c); + else + reread = true; + } + + /* Read something from current KBOARD's side queue, if possible. */ + + if (NILP (c)) + { + if (current_kboard->kbd_queue_has_data) + { + if (!CONSP (KVAR (current_kboard, kbd_queue))) + emacs_abort (); + c = XCAR (KVAR (current_kboard, kbd_queue)); + kset_kbd_queue (current_kboard, + XCDR (KVAR (current_kboard, kbd_queue))); + if (NILP (KVAR (current_kboard, kbd_queue))) + current_kboard->kbd_queue_has_data = 0; + input_pending = readable_events (0); + if (EVENT_HAS_PARAMETERS (c) + && EQ (EVENT_HEAD_KIND (EVENT_HEAD (c)), Qswitch_frame)) + internal_last_event_frame = XCAR (XCDR (c)); + Vlast_event_frame = internal_last_event_frame; + } + } + + /* If current_kboard's side queue is empty check the other kboards. + If one of them has data that we have not yet seen here, + switch to it and process the data waiting for it. + + Note: if the events queued up for another kboard + have already been seen here, and therefore are not a complete command, + the kbd_queue_has_data field is 0, so we skip that kboard here. + That's to avoid an infinite loop switching between kboards here. */ + if (NILP (c) && !single_kboard) + { + KBOARD *kb; + for (kb = all_kboards; kb; kb = kb->next_kboard) + if (kb->kbd_queue_has_data) + { + current_kboard = kb; + /* This is going to exit from read_char + so we had better get rid of this frame's stuff. */ + UNGCPRO; + return make_number (-2); /* wrong_kboard_jmpbuf */ + } + } + + wrong_kboard: + + STOP_POLLING; + + if (NILP (c)) + { + c = read_decoded_event_from_main_queue (end_time, local_getcjmp, + prev_event, used_mouse_menu); + if (NILP (c) && end_time + && timespec_cmp (*end_time, current_timespec ()) <= 0) + { + goto exit; + } + + if (EQ (c, make_number (-2))) + { + /* This is going to exit from read_char + so we had better get rid of this frame's stuff. */ + UNGCPRO; + return c; + } + } + + non_reread: + + if (!end_time) + timer_stop_idle (); + RESUME_POLLING; + + if (NILP (c)) + { + if (commandflag >= 0 + && !input_pending && !detect_input_pending_run_timers (0)) + redisplay (); + + goto wrong_kboard; + } + + /* Buffer switch events are only for internal wakeups + so don't show them to the user. + Also, don't record a key if we already did. */ + if (BUFFERP (c)) + goto exit; + + /* Process special events within read_char + and loop around to read another event. */ + save = Vquit_flag; + Vquit_flag = Qnil; + tem = access_keymap (get_keymap (Vspecial_event_map, 0, 1), c, 0, 0, 1); + Vquit_flag = save; + + if (!NILP (tem)) + { + struct buffer *prev_buffer = current_buffer; + last_input_event = c; + call4 (Qcommand_execute, tem, Qnil, Fvector (1, &last_input_event), Qt); + + if (CONSP (c) && EQ (XCAR (c), Qselect_window) && !end_time) + /* We stopped being idle for this event; undo that. This + prevents automatic window selection (under + mouse_autoselect_window from acting as a real input event, for + example banishing the mouse under mouse-avoidance-mode. */ + timer_resume_idle (); + + if (current_buffer != prev_buffer) + { + /* The command may have changed the keymaps. Pretend there + is input in another keyboard and return. This will + recalculate keymaps. */ + c = make_number (-2); + goto exit; + } + else + goto retry; + } + + /* Handle things that only apply to characters. */ + if (INTEGERP (c)) + { + /* If kbd_buffer_get_event gave us an EOF, return that. */ + if (XINT (c) == -1) + goto exit; + + if ((STRINGP (KVAR (current_kboard, Vkeyboard_translate_table)) + && UNSIGNED_CMP (XFASTINT (c), <, + SCHARS (KVAR (current_kboard, + Vkeyboard_translate_table)))) + || (VECTORP (KVAR (current_kboard, Vkeyboard_translate_table)) + && UNSIGNED_CMP (XFASTINT (c), <, + ASIZE (KVAR (current_kboard, + Vkeyboard_translate_table)))) + || (CHAR_TABLE_P (KVAR (current_kboard, Vkeyboard_translate_table)) + && CHARACTERP (c))) + { + Lisp_Object d; + d = Faref (KVAR (current_kboard, Vkeyboard_translate_table), c); + /* nil in keyboard-translate-table means no translation. */ + if (!NILP (d)) + c = d; + } + } + + /* If this event is a mouse click in the menu bar, + return just menu-bar for now. Modify the mouse click event + so we won't do this twice, then queue it up. */ + if (EVENT_HAS_PARAMETERS (c) + && CONSP (XCDR (c)) + && CONSP (EVENT_START (c)) + && CONSP (XCDR (EVENT_START (c)))) + { + Lisp_Object posn; + + posn = POSN_POSN (EVENT_START (c)); + /* Handle menu-bar events: + insert the dummy prefix event `menu-bar'. */ + if (EQ (posn, Qmenu_bar) || EQ (posn, Qtool_bar)) + { + /* Change menu-bar to (menu-bar) as the event "position". */ + POSN_SET_POSN (EVENT_START (c), list1 (posn)); + + also_record = c; + Vunread_command_events = Fcons (c, Vunread_command_events); + c = posn; + } + } + + /* Store these characters into recent_keys, the dribble file if any, + and the keyboard macro being defined, if any. */ + record_char (c); + if (! NILP (also_record)) + record_char (also_record); + + /* Wipe the echo area. + But first, if we are about to use an input method, + save the echo area contents for it to refer to. */ + if (INTEGERP (c) + && ! NILP (Vinput_method_function) + && ' ' <= XINT (c) && XINT (c) < 256 && XINT (c) != 127) + { + previous_echo_area_message = Fcurrent_message (); + Vinput_method_previous_message = previous_echo_area_message; + } + + /* Now wipe the echo area, except for help events which do their + own stuff with the echo area. */ + if (!CONSP (c) + || (!(EQ (Qhelp_echo, XCAR (c))) + && !(EQ (Qswitch_frame, XCAR (c))) + /* Don't wipe echo area for select window events: These might + get delayed via `mouse-autoselect-window' (Bug#11304). */ + && !(EQ (Qselect_window, XCAR (c))))) + { + if (!NILP (echo_area_buffer[0])) + { + safe_run_hooks (Qecho_area_clear_hook); + clear_message (1, 0); + } + } + + reread_for_input_method: + from_macro: + /* Pass this to the input method, if appropriate. */ + if (INTEGERP (c) + && ! NILP (Vinput_method_function) + /* Don't run the input method within a key sequence, + after the first event of the key sequence. */ + && NILP (prev_event) + && ' ' <= XINT (c) && XINT (c) < 256 && XINT (c) != 127) + { + Lisp_Object keys; + ptrdiff_t key_count; + bool key_count_reset; + ptrdiff_t command_key_start; + struct gcpro gcpro1; + ptrdiff_t count = SPECPDL_INDEX (); + + /* Save the echo status. */ + bool saved_immediate_echo = current_kboard->immediate_echo; + struct kboard *saved_ok_to_echo = ok_to_echo_at_next_pause; + Lisp_Object saved_echo_string = KVAR (current_kboard, echo_string); + ptrdiff_t saved_echo_after_prompt = current_kboard->echo_after_prompt; + +#if 0 + if (before_command_restore_flag) + { + this_command_key_count = before_command_key_count_1; + if (this_command_key_count < this_single_command_key_start) + this_single_command_key_start = this_command_key_count; + echo_truncate (before_command_echo_length_1); + before_command_restore_flag = 0; + } +#endif + + /* Save the this_command_keys status. */ + key_count = this_command_key_count; + key_count_reset = this_command_key_count_reset; + command_key_start = this_single_command_key_start; + + if (key_count > 0) + keys = Fcopy_sequence (this_command_keys); + else + keys = Qnil; + GCPRO1 (keys); + + /* Clear out this_command_keys. */ + this_command_key_count = 0; + this_command_key_count_reset = 0; + this_single_command_key_start = 0; + + /* Now wipe the echo area. */ + if (!NILP (echo_area_buffer[0])) + safe_run_hooks (Qecho_area_clear_hook); + clear_message (1, 0); + echo_truncate (0); + + /* If we are not reading a key sequence, + never use the echo area. */ + if (!KEYMAPP (map)) + { + specbind (Qinput_method_use_echo_area, Qt); + } + + /* Call the input method. */ + tem = call1 (Vinput_method_function, c); + + tem = unbind_to (count, tem); + + /* Restore the saved echoing state + and this_command_keys state. */ + this_command_key_count = key_count; + this_command_key_count_reset = key_count_reset; + this_single_command_key_start = command_key_start; + if (key_count > 0) + this_command_keys = keys; + + cancel_echoing (); + ok_to_echo_at_next_pause = saved_ok_to_echo; + /* Do not restore the echo area string when the user is + introducing a prefix argument. Otherwise we end with + repetitions of the partially introduced prefix + argument. (bug#19875) */ + if (NILP (intern ("prefix-arg"))) + { + kset_echo_string (current_kboard, saved_echo_string); + } + current_kboard->echo_after_prompt = saved_echo_after_prompt; + if (saved_immediate_echo) + echo_now (); + + UNGCPRO; + + /* The input method can return no events. */ + if (! CONSP (tem)) + { + /* Bring back the previous message, if any. */ + if (! NILP (previous_echo_area_message)) + message_with_string ("%s", previous_echo_area_message, 0); + goto retry; + } + /* It returned one event or more. */ + c = XCAR (tem); + Vunread_post_input_method_events + = nconc2 (XCDR (tem), Vunread_post_input_method_events); + } + + reread_first: + + /* Display help if not echoing. */ + if (CONSP (c) && EQ (XCAR (c), Qhelp_echo)) + { + /* (help-echo FRAME HELP WINDOW OBJECT POS). */ + Lisp_Object help, object, position, window, htem; + + htem = Fcdr (XCDR (c)); + help = Fcar (htem); + htem = Fcdr (htem); + window = Fcar (htem); + htem = Fcdr (htem); + object = Fcar (htem); + htem = Fcdr (htem); + position = Fcar (htem); + + show_help_echo (help, window, object, position); + + /* We stopped being idle for this event; undo that. */ + if (!end_time) + timer_resume_idle (); + goto retry; + } + + if ((! reread || this_command_key_count == 0 + || this_command_key_count_reset) + && !end_time) + { + + /* Don't echo mouse motion events. */ + if (echo_keystrokes_p () + && ! (EVENT_HAS_PARAMETERS (c) + && EQ (EVENT_HEAD_KIND (EVENT_HEAD (c)), Qmouse_movement))) + { + echo_char (c); + if (! NILP (also_record)) + echo_char (also_record); + /* Once we reread a character, echoing can happen + the next time we pause to read a new one. */ + ok_to_echo_at_next_pause = current_kboard; + } + + /* Record this character as part of the current key. */ + add_command_key (c); + if (! NILP (also_record)) + add_command_key (also_record); + } + + last_input_event = c; + num_input_events++; + + /* Process the help character specially if enabled. */ + if (!NILP (Vhelp_form) && help_char_p (c)) + { + ptrdiff_t count = SPECPDL_INDEX (); + + help_form_saved_window_configs + = Fcons (Fcurrent_window_configuration (Qnil), + help_form_saved_window_configs); + record_unwind_protect_void (read_char_help_form_unwind); + call0 (Qhelp_form_show); + + cancel_echoing (); + do + { + c = read_char (0, Qnil, Qnil, 0, NULL); + if (EVENT_HAS_PARAMETERS (c) + && EQ (EVENT_HEAD_KIND (EVENT_HEAD (c)), Qmouse_click)) + XSETCAR (help_form_saved_window_configs, Qnil); + } + while (BUFFERP (c)); + /* Remove the help from the frame. */ + unbind_to (count, Qnil); + + redisplay (); + if (EQ (c, make_number (040))) + { + cancel_echoing (); + do + c = read_char (0, Qnil, Qnil, 0, NULL); + while (BUFFERP (c)); + } + } + + exit: + RESUME_POLLING; + input_was_pending = input_pending; + RETURN_UNGCPRO (c); +} + +/* Record a key that came from a mouse menu. + Record it for echoing, for this-command-keys, and so on. */ + +static void +record_menu_key (Lisp_Object c) +{ + /* Wipe the echo area. */ + clear_message (1, 0); + + record_char (c); + +#if 0 + before_command_key_count = this_command_key_count; + before_command_echo_length = echo_length (); +#endif + + /* Don't echo mouse motion events. */ + if (echo_keystrokes_p ()) + { + echo_char (c); + + /* Once we reread a character, echoing can happen + the next time we pause to read a new one. */ + ok_to_echo_at_next_pause = 0; + } + + /* Record this character as part of the current key. */ + add_command_key (c); + + /* Re-reading in the middle of a command. */ + last_input_event = c; + num_input_events++; +} + +/* Return true if should recognize C as "the help character". */ + +static bool +help_char_p (Lisp_Object c) +{ + Lisp_Object tail; + + if (EQ (c, Vhelp_char)) + return 1; + for (tail = Vhelp_event_list; CONSP (tail); tail = XCDR (tail)) + if (EQ (c, XCAR (tail))) + return 1; + return 0; +} + +/* Record the input event C in various ways. */ + +static void +record_char (Lisp_Object c) +{ + int recorded = 0; + + if (CONSP (c) && (EQ (XCAR (c), Qhelp_echo) || EQ (XCAR (c), Qmouse_movement))) + { + /* To avoid filling recent_keys with help-echo and mouse-movement + events, we filter out repeated help-echo events, only store the + first and last in a series of mouse-movement events, and don't + store repeated help-echo events which are only separated by + mouse-movement events. */ + + Lisp_Object ev1, ev2, ev3; + int ix1, ix2, ix3; + + if ((ix1 = recent_keys_index - 1) < 0) + ix1 = NUM_RECENT_KEYS - 1; + ev1 = AREF (recent_keys, ix1); + + if ((ix2 = ix1 - 1) < 0) + ix2 = NUM_RECENT_KEYS - 1; + ev2 = AREF (recent_keys, ix2); + + if ((ix3 = ix2 - 1) < 0) + ix3 = NUM_RECENT_KEYS - 1; + ev3 = AREF (recent_keys, ix3); + + if (EQ (XCAR (c), Qhelp_echo)) + { + /* Don't record `help-echo' in recent_keys unless it shows some help + message, and a different help than the previously recorded + event. */ + Lisp_Object help, last_help; + + help = Fcar_safe (Fcdr_safe (XCDR (c))); + if (!STRINGP (help)) + recorded = 1; + else if (CONSP (ev1) && EQ (XCAR (ev1), Qhelp_echo) + && (last_help = Fcar_safe (Fcdr_safe (XCDR (ev1))), EQ (last_help, help))) + recorded = 1; + else if (CONSP (ev1) && EQ (XCAR (ev1), Qmouse_movement) + && CONSP (ev2) && EQ (XCAR (ev2), Qhelp_echo) + && (last_help = Fcar_safe (Fcdr_safe (XCDR (ev2))), EQ (last_help, help))) + recorded = -1; + else if (CONSP (ev1) && EQ (XCAR (ev1), Qmouse_movement) + && CONSP (ev2) && EQ (XCAR (ev2), Qmouse_movement) + && CONSP (ev3) && EQ (XCAR (ev3), Qhelp_echo) + && (last_help = Fcar_safe (Fcdr_safe (XCDR (ev3))), EQ (last_help, help))) + recorded = -2; + } + else if (EQ (XCAR (c), Qmouse_movement)) + { + /* Only record one pair of `mouse-movement' on a window in recent_keys. + So additional mouse movement events replace the last element. */ + Lisp_Object last_window, window; + + window = Fcar_safe (Fcar_safe (XCDR (c))); + if (CONSP (ev1) && EQ (XCAR (ev1), Qmouse_movement) + && (last_window = Fcar_safe (Fcar_safe (XCDR (ev1))), EQ (last_window, window)) + && CONSP (ev2) && EQ (XCAR (ev2), Qmouse_movement) + && (last_window = Fcar_safe (Fcar_safe (XCDR (ev2))), EQ (last_window, window))) + { + ASET (recent_keys, ix1, c); + recorded = 1; + } + } + } + else + store_kbd_macro_char (c); + + if (!recorded) + { + total_keys += total_keys < NUM_RECENT_KEYS; + ASET (recent_keys, recent_keys_index, c); + if (++recent_keys_index >= NUM_RECENT_KEYS) + recent_keys_index = 0; + } + else if (recorded < 0) + { + /* We need to remove one or two events from recent_keys. + To do this, we simply put nil at those events and move the + recent_keys_index backwards over those events. Usually, + users will never see those nil events, as they will be + overwritten by the command keys entered to see recent_keys + (e.g. C-h l). */ + + while (recorded++ < 0 && total_keys > 0) + { + if (total_keys < NUM_RECENT_KEYS) + total_keys--; + if (--recent_keys_index < 0) + recent_keys_index = NUM_RECENT_KEYS - 1; + ASET (recent_keys, recent_keys_index, Qnil); + } + } + + num_nonmacro_input_events++; + + /* Write c to the dribble file. If c is a lispy event, write + the event's symbol to the dribble file, in . Bleaugh. + If you, dear reader, have a better idea, you've got the source. :-) */ + if (dribble) + { + block_input (); + if (INTEGERP (c)) + { + if (XUINT (c) < 0x100) + putc (XUINT (c), dribble); + else + fprintf (dribble, " 0x%"pI"x", XUINT (c)); + } + else + { + Lisp_Object dribblee; + + /* If it's a structured event, take the event header. */ + dribblee = EVENT_HEAD (c); + + if (SYMBOLP (dribblee)) + { + putc ('<', dribble); + fwrite (SDATA (SYMBOL_NAME (dribblee)), sizeof (char), + SBYTES (SYMBOL_NAME (dribblee)), + dribble); + putc ('>', dribble); + } + } + + fflush (dribble); + unblock_input (); + } +} + +/* Copy out or in the info on where C-g should throw to. + This is used when running Lisp code from within get_char, + in case get_char is called recursively. + See read_process_output. */ + +static void +save_getcjmp (sys_jmp_buf temp) +{ + memcpy (temp, getcjmp, sizeof getcjmp); +} + +static void +restore_getcjmp (sys_jmp_buf temp) +{ + memcpy (getcjmp, temp, sizeof getcjmp); +} + +/* Low level keyboard/mouse input. + kbd_buffer_store_event places events in kbd_buffer, and + kbd_buffer_get_event retrieves them. */ + +/* Return true if there are any events in the queue that read-char + would return. If this returns false, a read-char would block. */ +static bool +readable_events (int flags) +{ + if (flags & READABLE_EVENTS_DO_TIMERS_NOW) + timer_check (); + + /* If the buffer contains only FOCUS_IN_EVENT events, and + READABLE_EVENTS_FILTER_EVENTS is set, report it as empty. */ + if (kbd_fetch_ptr != kbd_store_ptr) + { + if (flags & (READABLE_EVENTS_FILTER_EVENTS +#ifdef USE_TOOLKIT_SCROLL_BARS + | READABLE_EVENTS_IGNORE_SQUEEZABLES +#endif + )) + { + struct input_event *event; + + event = ((kbd_fetch_ptr < kbd_buffer + KBD_BUFFER_SIZE) + ? kbd_fetch_ptr + : kbd_buffer); + + do + { + if (!( +#ifdef USE_TOOLKIT_SCROLL_BARS + (flags & READABLE_EVENTS_FILTER_EVENTS) && +#endif + event->kind == FOCUS_IN_EVENT) +#ifdef USE_TOOLKIT_SCROLL_BARS + && !((flags & READABLE_EVENTS_IGNORE_SQUEEZABLES) + && (event->kind == SCROLL_BAR_CLICK_EVENT + || event->kind == HORIZONTAL_SCROLL_BAR_CLICK_EVENT) + && event->part == scroll_bar_handle + && event->modifiers == 0) +#endif + && !((flags & READABLE_EVENTS_FILTER_EVENTS) + && event->kind == BUFFER_SWITCH_EVENT)) + return 1; + event++; + if (event == kbd_buffer + KBD_BUFFER_SIZE) + event = kbd_buffer; + } + while (event != kbd_store_ptr); + } + else + return 1; + } + + if (!(flags & READABLE_EVENTS_IGNORE_SQUEEZABLES) + && !NILP (do_mouse_tracking) && some_mouse_moved ()) + return 1; + if (single_kboard) + { + if (current_kboard->kbd_queue_has_data) + return 1; + } + else + { + KBOARD *kb; + for (kb = all_kboards; kb; kb = kb->next_kboard) + if (kb->kbd_queue_has_data) + return 1; + } + return 0; +} + +/* Set this for debugging, to have a way to get out */ +int stop_character EXTERNALLY_VISIBLE; + +static KBOARD * +event_to_kboard (struct input_event *event) +{ + /* Not applicable for these special events. */ + if (event->kind == SELECTION_REQUEST_EVENT + || event->kind == SELECTION_CLEAR_EVENT) + return NULL; + else + { + Lisp_Object obj = event->frame_or_window; + /* There are some events that set this field to nil or string. */ + if (WINDOWP (obj)) + obj = WINDOW_FRAME (XWINDOW (obj)); + /* Also ignore dead frames here. */ + return ((FRAMEP (obj) && FRAME_LIVE_P (XFRAME (obj))) + ? FRAME_KBOARD (XFRAME (obj)) : NULL); + } +} + +#ifdef subprocesses +/* Return the number of slots occupied in kbd_buffer. */ + +static int +kbd_buffer_nr_stored (void) +{ + return kbd_fetch_ptr == kbd_store_ptr + ? 0 + : (kbd_fetch_ptr < kbd_store_ptr + ? kbd_store_ptr - kbd_fetch_ptr + : ((kbd_buffer + KBD_BUFFER_SIZE) - kbd_fetch_ptr + + (kbd_store_ptr - kbd_buffer))); +} +#endif /* Store an event obtained at interrupt level into kbd_buffer, fifo */ + +void +kbd_buffer_store_event (register struct input_event *event) +{ + kbd_buffer_store_event_hold (event, 0); +} + +/* Store EVENT obtained at interrupt level into kbd_buffer, fifo. + + If HOLD_QUIT is 0, just stuff EVENT into the fifo. + Else, if HOLD_QUIT.kind != NO_EVENT, discard EVENT. + Else, if EVENT is a quit event, store the quit event + in HOLD_QUIT, and return (thus ignoring further events). + + This is used to postpone the processing of the quit event until all + subsequent input events have been parsed (and discarded). */ + +void +kbd_buffer_store_event_hold (register struct input_event *event, + struct input_event *hold_quit) +{ + if (event->kind == NO_EVENT) + emacs_abort (); + + if (hold_quit && hold_quit->kind != NO_EVENT) + return; + + if (event->kind == ASCII_KEYSTROKE_EVENT) + { + register int c = event->code & 0377; + + if (event->modifiers & ctrl_modifier) + c = make_ctrl_char (c); + + c |= (event->modifiers + & (meta_modifier | alt_modifier + | hyper_modifier | super_modifier)); + + if (c == quit_char) + { + KBOARD *kb = FRAME_KBOARD (XFRAME (event->frame_or_window)); + struct input_event *sp; + + if (single_kboard && kb != current_kboard) + { + kset_kbd_queue + (kb, list2 (make_lispy_switch_frame (event->frame_or_window), + make_number (c))); + kb->kbd_queue_has_data = 1; + for (sp = kbd_fetch_ptr; sp != kbd_store_ptr; sp++) + { + if (sp == kbd_buffer + KBD_BUFFER_SIZE) + sp = kbd_buffer; + + if (event_to_kboard (sp) == kb) + { + sp->kind = NO_EVENT; + sp->frame_or_window = Qnil; + sp->arg = Qnil; + } + } + return; + } + + if (hold_quit) + { + *hold_quit = *event; + return; + } + + /* If this results in a quit_char being returned to Emacs as + input, set Vlast_event_frame properly. If this doesn't + get returned to Emacs as an event, the next event read + will set Vlast_event_frame again, so this is safe to do. */ + { + Lisp_Object focus; + + focus = FRAME_FOCUS_FRAME (XFRAME (event->frame_or_window)); + if (NILP (focus)) + focus = event->frame_or_window; + internal_last_event_frame = focus; + Vlast_event_frame = focus; + } + + handle_interrupt (0); + return; + } + + if (c && c == stop_character) + { + sys_suspend (); + return; + } + } + /* Don't insert two BUFFER_SWITCH_EVENT's in a row. + Just ignore the second one. */ + else if (event->kind == BUFFER_SWITCH_EVENT + && kbd_fetch_ptr != kbd_store_ptr + && ((kbd_store_ptr == kbd_buffer + ? kbd_buffer + KBD_BUFFER_SIZE - 1 + : kbd_store_ptr - 1)->kind) == BUFFER_SWITCH_EVENT) + return; + + if (kbd_store_ptr - kbd_buffer == KBD_BUFFER_SIZE) + kbd_store_ptr = kbd_buffer; + + /* Don't let the very last slot in the buffer become full, + since that would make the two pointers equal, + and that is indistinguishable from an empty buffer. + Discard the event if it would fill the last slot. */ + if (kbd_fetch_ptr - 1 != kbd_store_ptr) + { + *kbd_store_ptr = *event; + ++kbd_store_ptr; +#ifdef subprocesses + if (kbd_buffer_nr_stored () > KBD_BUFFER_SIZE / 2 + && ! kbd_on_hold_p ()) + { + /* Don't read keyboard input until we have processed kbd_buffer. + This happens when pasting text longer than KBD_BUFFER_SIZE/2. */ + hold_keyboard_input (); + if (!noninteractive) + ignore_sigio (); + stop_polling (); + } +#endif /* subprocesses */ + } + + /* If we're inside while-no-input, and this event qualifies + as input, set quit-flag to cause an interrupt. */ + if (!NILP (Vthrow_on_input) + && event->kind != FOCUS_IN_EVENT + && event->kind != FOCUS_OUT_EVENT + && event->kind != HELP_EVENT + && event->kind != ICONIFY_EVENT + && event->kind != DEICONIFY_EVENT) + { + Vquit_flag = Vthrow_on_input; + /* If we're inside a function that wants immediate quits, + do it now. */ + if (immediate_quit && NILP (Vinhibit_quit)) + { + immediate_quit = 0; + QUIT; + } + } +} + + +/* Put an input event back in the head of the event queue. */ + +void +kbd_buffer_unget_event (register struct input_event *event) +{ + if (kbd_fetch_ptr == kbd_buffer) + kbd_fetch_ptr = kbd_buffer + KBD_BUFFER_SIZE; + + /* Don't let the very last slot in the buffer become full, */ + if (kbd_fetch_ptr - 1 != kbd_store_ptr) + { + --kbd_fetch_ptr; + *kbd_fetch_ptr = *event; + } +} + +/* Limit help event positions to this range, to avoid overflow problems. */ +#define INPUT_EVENT_POS_MAX \ + ((ptrdiff_t) min (PTRDIFF_MAX, min (TYPE_MAXIMUM (Time) / 2, \ + MOST_POSITIVE_FIXNUM))) +#define INPUT_EVENT_POS_MIN (-1 - INPUT_EVENT_POS_MAX) + +/* Return a Time that encodes position POS. POS must be in range. */ + +static Time +position_to_Time (ptrdiff_t pos) +{ + eassert (INPUT_EVENT_POS_MIN <= pos && pos <= INPUT_EVENT_POS_MAX); + return pos; +} + +/* Return the position that ENCODED_POS encodes. + Avoid signed integer overflow. */ + +static ptrdiff_t +Time_to_position (Time encoded_pos) +{ + if (encoded_pos <= INPUT_EVENT_POS_MAX) + return encoded_pos; + Time encoded_pos_min = INPUT_EVENT_POS_MIN; + eassert (encoded_pos_min <= encoded_pos); + ptrdiff_t notpos = -1 - encoded_pos; + return -1 - notpos; +} + +/* Generate a HELP_EVENT input_event and store it in the keyboard + buffer. + + HELP is the help form. + + FRAME and WINDOW are the frame and window where the help is + generated. OBJECT is the Lisp object where the help was found (a + buffer, a string, an overlay, or nil if neither from a string nor + from a buffer). POS is the position within OBJECT where the help + was found. */ + +void +gen_help_event (Lisp_Object help, Lisp_Object frame, Lisp_Object window, + Lisp_Object object, ptrdiff_t pos) +{ + struct input_event event; + + event.kind = HELP_EVENT; + event.frame_or_window = frame; + event.arg = object; + event.x = WINDOWP (window) ? window : frame; + event.y = help; + event.timestamp = position_to_Time (pos); + kbd_buffer_store_event (&event); +} + + +/* Store HELP_EVENTs for HELP on FRAME in the input queue. */ + +void +kbd_buffer_store_help_event (Lisp_Object frame, Lisp_Object help) +{ + struct input_event event; + + event.kind = HELP_EVENT; + event.frame_or_window = frame; + event.arg = Qnil; + event.x = Qnil; + event.y = help; + event.timestamp = 0; + kbd_buffer_store_event (&event); +} + + +/* Discard any mouse events in the event buffer by setting them to + NO_EVENT. */ +void +discard_mouse_events (void) +{ + struct input_event *sp; + for (sp = kbd_fetch_ptr; sp != kbd_store_ptr; sp++) + { + if (sp == kbd_buffer + KBD_BUFFER_SIZE) + sp = kbd_buffer; + + if (sp->kind == MOUSE_CLICK_EVENT + || sp->kind == WHEEL_EVENT + || sp->kind == HORIZ_WHEEL_EVENT +#ifdef HAVE_GPM + || sp->kind == GPM_CLICK_EVENT +#endif + || sp->kind == SCROLL_BAR_CLICK_EVENT + || sp->kind == HORIZONTAL_SCROLL_BAR_CLICK_EVENT) + { + sp->kind = NO_EVENT; + } + } +} + + +/* Return true if there are any real events waiting in the event + buffer, not counting `NO_EVENT's. + + Discard NO_EVENT events at the front of the input queue, possibly + leaving the input queue empty if there are no real input events. */ + +bool +kbd_buffer_events_waiting (void) +{ + struct input_event *sp; + + for (sp = kbd_fetch_ptr; + sp != kbd_store_ptr && sp->kind == NO_EVENT; + ++sp) + { + if (sp == kbd_buffer + KBD_BUFFER_SIZE) + sp = kbd_buffer; + } + + kbd_fetch_ptr = sp; + return sp != kbd_store_ptr && sp->kind != NO_EVENT; +} + + +/* Clear input event EVENT. */ + +static void +clear_event (struct input_event *event) +{ + event->kind = NO_EVENT; +} + + +/* Read one event from the event buffer, waiting if necessary. + The value is a Lisp object representing the event. + The value is nil for an event that should be ignored, + or that was handled here. + We always read and discard one event. */ + +static Lisp_Object +kbd_buffer_get_event (KBOARD **kbp, + bool *used_mouse_menu, + struct timespec *end_time) +{ + Lisp_Object obj; + +#ifdef subprocesses + if (kbd_on_hold_p () && kbd_buffer_nr_stored () < KBD_BUFFER_SIZE / 4) + { + /* Start reading input again because we have processed enough to + be able to accept new events again. */ + unhold_keyboard_input (); + start_polling (); + } +#endif /* subprocesses */ + +#if !defined HAVE_DBUS && !defined USE_FILE_NOTIFY + if (noninteractive + /* In case we are running as a daemon, only do this before + detaching from the terminal. */ + || (IS_DAEMON && DAEMON_RUNNING)) + { + int c = getchar (); + XSETINT (obj, c); + *kbp = current_kboard; + return obj; + } +#endif /* !defined HAVE_DBUS && !defined USE_FILE_NOTIFY */ + + /* Wait until there is input available. */ + for (;;) + { + /* Break loop if there's an unread command event. Needed in + moused window autoselection which uses a timer to insert such + events. */ + if (CONSP (Vunread_command_events)) + break; + + if (kbd_fetch_ptr != kbd_store_ptr) + break; + if (!NILP (do_mouse_tracking) && some_mouse_moved ()) + break; + + /* If the quit flag is set, then read_char will return + quit_char, so that counts as "available input." */ + if (!NILP (Vquit_flag)) + quit_throw_to_read_char (0); + + /* One way or another, wait until input is available; then, if + interrupt handlers have not read it, read it now. */ + +#ifdef USABLE_SIGIO + gobble_input (); +#endif + if (kbd_fetch_ptr != kbd_store_ptr) + break; + if (!NILP (do_mouse_tracking) && some_mouse_moved ()) + break; + if (end_time) + { + struct timespec now = current_timespec (); + if (timespec_cmp (*end_time, now) <= 0) + return Qnil; /* Finished waiting. */ + else + { + struct timespec duration = timespec_sub (*end_time, now); + wait_reading_process_output (min (duration.tv_sec, + WAIT_READING_MAX), + duration.tv_nsec, + -1, 1, Qnil, NULL, 0); + } + } + else + { + bool do_display = true; + + if (FRAME_TERMCAP_P (SELECTED_FRAME ())) + { + struct tty_display_info *tty = CURTTY (); + + /* When this TTY is displaying a menu, we must prevent + any redisplay, because we modify the frame's glyph + matrix behind the back of the display engine. */ + if (tty->showing_menu) + do_display = false; + } + + wait_reading_process_output (0, 0, -1, do_display, Qnil, NULL, 0); + } + + if (!interrupt_input && kbd_fetch_ptr == kbd_store_ptr) + gobble_input (); + } + + if (CONSP (Vunread_command_events)) + { + Lisp_Object first; + first = XCAR (Vunread_command_events); + Vunread_command_events = XCDR (Vunread_command_events); + *kbp = current_kboard; + return first; + } + + /* At this point, we know that there is a readable event available + somewhere. If the event queue is empty, then there must be a + mouse movement enabled and available. */ + if (kbd_fetch_ptr != kbd_store_ptr) + { + struct input_event *event; + + event = ((kbd_fetch_ptr < kbd_buffer + KBD_BUFFER_SIZE) + ? kbd_fetch_ptr + : kbd_buffer); + + *kbp = event_to_kboard (event); + if (*kbp == 0) + *kbp = current_kboard; /* Better than returning null ptr? */ + + obj = Qnil; + + /* These two kinds of events get special handling + and don't actually appear to the command loop. + We return nil for them. */ + if (event->kind == SELECTION_REQUEST_EVENT + || event->kind == SELECTION_CLEAR_EVENT) + { +#ifdef HAVE_X11 + struct input_event copy; + + /* Remove it from the buffer before processing it, + since otherwise swallow_events will see it + and process it again. */ + copy = *event; + kbd_fetch_ptr = event + 1; + input_pending = readable_events (0); + x_handle_selection_event (©); +#else + /* We're getting selection request events, but we don't have + a window system. */ + emacs_abort (); +#endif + } + +#if defined (HAVE_NS) + else if (event->kind == NS_TEXT_EVENT) + { + if (event->code == KEY_NS_PUT_WORKING_TEXT) + obj = list1 (intern ("ns-put-working-text")); + else + obj = list1 (intern ("ns-unput-working-text")); + kbd_fetch_ptr = event + 1; + if (used_mouse_menu) + *used_mouse_menu = 1; + } +#endif + +#if defined (HAVE_X11) || defined (HAVE_NTGUI) \ + || defined (HAVE_NS) + else if (event->kind == DELETE_WINDOW_EVENT) + { + /* Make an event (delete-frame (FRAME)). */ + obj = list2 (Qdelete_frame, list1 (event->frame_or_window)); + kbd_fetch_ptr = event + 1; + } +#endif +#if defined (HAVE_X11) || defined (HAVE_NTGUI) \ + || defined (HAVE_NS) + else if (event->kind == ICONIFY_EVENT) + { + /* Make an event (iconify-frame (FRAME)). */ + obj = list2 (Qiconify_frame, list1 (event->frame_or_window)); + kbd_fetch_ptr = event + 1; + } + else if (event->kind == DEICONIFY_EVENT) + { + /* Make an event (make-frame-visible (FRAME)). */ + obj = list2 (Qmake_frame_visible, list1 (event->frame_or_window)); + kbd_fetch_ptr = event + 1; + } +#endif + else if (event->kind == BUFFER_SWITCH_EVENT) + { + /* The value doesn't matter here; only the type is tested. */ + XSETBUFFER (obj, current_buffer); + kbd_fetch_ptr = event + 1; + } +#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ + || defined (HAVE_NS) || defined (USE_GTK) + else if (event->kind == MENU_BAR_ACTIVATE_EVENT) + { + kbd_fetch_ptr = event + 1; + input_pending = readable_events (0); + if (FRAME_LIVE_P (XFRAME (event->frame_or_window))) + x_activate_menubar (XFRAME (event->frame_or_window)); + } +#endif +#ifdef HAVE_NTGUI + else if (event->kind == LANGUAGE_CHANGE_EVENT) + { + /* Make an event (language-change FRAME CODEPAGE LANGUAGE-ID). */ + obj = list4 (Qlanguage_change, + event->frame_or_window, + make_number (event->code), + make_number (event->modifiers)); + kbd_fetch_ptr = event + 1; + } +#endif +#ifdef USE_FILE_NOTIFY + else if (event->kind == FILE_NOTIFY_EVENT) + { +#ifdef HAVE_W32NOTIFY + /* Make an event (file-notify (DESCRIPTOR ACTION FILE) CALLBACK). */ + obj = list3 (Qfile_notify, event->arg, event->frame_or_window); +#else + obj = make_lispy_event (event); +#endif + kbd_fetch_ptr = event + 1; + } +#endif /* USE_FILE_NOTIFY */ + else if (event->kind == SAVE_SESSION_EVENT) + { + obj = list2 (Qsave_session, event->arg); + kbd_fetch_ptr = event + 1; + } + /* Just discard these, by returning nil. + With MULTI_KBOARD, these events are used as placeholders + when we need to randomly delete events from the queue. + (They shouldn't otherwise be found in the buffer, + but on some machines it appears they do show up + even without MULTI_KBOARD.) */ + /* On Windows NT/9X, NO_EVENT is used to delete extraneous + mouse events during a popup-menu call. */ + else if (event->kind == NO_EVENT) + kbd_fetch_ptr = event + 1; + else if (event->kind == HELP_EVENT) + { + Lisp_Object object, position, help, frame, window; + + frame = event->frame_or_window; + object = event->arg; + position = make_number (Time_to_position (event->timestamp)); + window = event->x; + help = event->y; + clear_event (event); + + kbd_fetch_ptr = event + 1; + if (!WINDOWP (window)) + window = Qnil; + obj = Fcons (Qhelp_echo, + list5 (frame, help, window, object, position)); + } + else if (event->kind == FOCUS_IN_EVENT) + { + /* Notification of a FocusIn event. The frame receiving the + focus is in event->frame_or_window. Generate a + switch-frame event if necessary. */ + Lisp_Object frame, focus; + + frame = event->frame_or_window; + focus = FRAME_FOCUS_FRAME (XFRAME (frame)); + if (FRAMEP (focus)) + frame = focus; + + if ( +#ifdef HAVE_X11 + ! NILP (event->arg) + && +#endif + !EQ (frame, internal_last_event_frame) + && !EQ (frame, selected_frame)) + obj = make_lispy_switch_frame (frame); + else + obj = make_lispy_focus_in (frame); + + internal_last_event_frame = frame; + kbd_fetch_ptr = event + 1; + } + else if (event->kind == FOCUS_OUT_EVENT) + { +#ifdef HAVE_WINDOW_SYSTEM + + Display_Info *di; + Lisp_Object frame = event->frame_or_window; + bool focused = false; + + for (di = x_display_list; di && ! focused; di = di->next) + focused = di->x_highlight_frame != 0; + + if (!focused) + obj = make_lispy_focus_out (frame); + +#endif /* HAVE_WINDOW_SYSTEM */ + + kbd_fetch_ptr = event + 1; + } +#ifdef HAVE_DBUS + else if (event->kind == DBUS_EVENT) + { + obj = make_lispy_event (event); + kbd_fetch_ptr = event + 1; + } +#endif + else if (event->kind == CONFIG_CHANGED_EVENT) + { + obj = make_lispy_event (event); + kbd_fetch_ptr = event + 1; + } + else + { + /* If this event is on a different frame, return a switch-frame this + time, and leave the event in the queue for next time. */ + Lisp_Object frame; + Lisp_Object focus; + + frame = event->frame_or_window; + if (CONSP (frame)) + frame = XCAR (frame); + else if (WINDOWP (frame)) + frame = WINDOW_FRAME (XWINDOW (frame)); + + focus = FRAME_FOCUS_FRAME (XFRAME (frame)); + if (! NILP (focus)) + frame = focus; + + if (! EQ (frame, internal_last_event_frame) + && !EQ (frame, selected_frame)) + obj = make_lispy_switch_frame (frame); + internal_last_event_frame = frame; + + /* If we didn't decide to make a switch-frame event, go ahead + and build a real event from the queue entry. */ + + if (NILP (obj)) + { + obj = make_lispy_event (event); + +#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ + || defined (HAVE_NS) || defined (USE_GTK) + /* If this was a menu selection, then set the flag to inhibit + writing to last_nonmenu_event. Don't do this if the event + we're returning is (menu-bar), though; that indicates the + beginning of the menu sequence, and we might as well leave + that as the `event with parameters' for this selection. */ + if (used_mouse_menu + && !EQ (event->frame_or_window, event->arg) + && (event->kind == MENU_BAR_EVENT + || event->kind == TOOL_BAR_EVENT)) + *used_mouse_menu = 1; +#endif +#ifdef HAVE_NS + /* Certain system events are non-key events. */ + if (used_mouse_menu + && event->kind == NS_NONKEY_EVENT) + *used_mouse_menu = 1; +#endif + + /* Wipe out this event, to catch bugs. */ + clear_event (event); + kbd_fetch_ptr = event + 1; + } + } + } + /* Try generating a mouse motion event. */ + else if (!NILP (do_mouse_tracking) && some_mouse_moved ()) + { + struct frame *f = some_mouse_moved (); + Lisp_Object bar_window; + enum scroll_bar_part part; + Lisp_Object x, y; + Time t; + + *kbp = current_kboard; + /* Note that this uses F to determine which terminal to look at. + If there is no valid info, it does not store anything + so x remains nil. */ + x = Qnil; + + /* XXX Can f or mouse_position_hook be NULL here? */ + if (f && FRAME_TERMINAL (f)->mouse_position_hook) + (*FRAME_TERMINAL (f)->mouse_position_hook) (&f, 0, &bar_window, + &part, &x, &y, &t); + + obj = Qnil; + + /* Decide if we should generate a switch-frame event. Don't + generate switch-frame events for motion outside of all Emacs + frames. */ + if (!NILP (x) && f) + { + Lisp_Object frame; + + frame = FRAME_FOCUS_FRAME (f); + if (NILP (frame)) + XSETFRAME (frame, f); + + if (! EQ (frame, internal_last_event_frame) + && !EQ (frame, selected_frame)) + obj = make_lispy_switch_frame (frame); + internal_last_event_frame = frame; + } + + /* If we didn't decide to make a switch-frame event, go ahead and + return a mouse-motion event. */ + if (!NILP (x) && NILP (obj)) + obj = make_lispy_movement (f, bar_window, part, x, y, t); + } + else + /* We were promised by the above while loop that there was + something for us to read! */ + emacs_abort (); + + input_pending = readable_events (0); + + Vlast_event_frame = internal_last_event_frame; + + return (obj); +} + +/* Process any non-user-visible events (currently X selection events), + without reading any user-visible events. */ + +static void +process_special_events (void) +{ + struct input_event *event; + + for (event = kbd_fetch_ptr; event != kbd_store_ptr; ++event) + { + if (event == kbd_buffer + KBD_BUFFER_SIZE) + { + event = kbd_buffer; + if (event == kbd_store_ptr) + break; + } + + /* If we find a stored X selection request, handle it now. */ + if (event->kind == SELECTION_REQUEST_EVENT + || event->kind == SELECTION_CLEAR_EVENT) + { +#ifdef HAVE_X11 + + /* Remove the event from the fifo buffer before processing; + otherwise swallow_events called recursively could see it + and process it again. To do this, we move the events + between kbd_fetch_ptr and EVENT one slot to the right, + cyclically. */ + + struct input_event copy = *event; + struct input_event *beg + = (kbd_fetch_ptr == kbd_buffer + KBD_BUFFER_SIZE) + ? kbd_buffer : kbd_fetch_ptr; + + if (event > beg) + memmove (beg + 1, beg, (event - beg) * sizeof (struct input_event)); + else if (event < beg) + { + if (event > kbd_buffer) + memmove (kbd_buffer + 1, kbd_buffer, + (event - kbd_buffer) * sizeof (struct input_event)); + *kbd_buffer = *(kbd_buffer + KBD_BUFFER_SIZE - 1); + if (beg < kbd_buffer + KBD_BUFFER_SIZE - 1) + memmove (beg + 1, beg, + (kbd_buffer + KBD_BUFFER_SIZE - 1 - beg) + * sizeof (struct input_event)); + } + + if (kbd_fetch_ptr == kbd_buffer + KBD_BUFFER_SIZE) + kbd_fetch_ptr = kbd_buffer + 1; + else + kbd_fetch_ptr++; + + input_pending = readable_events (0); + x_handle_selection_event (©); +#else + /* We're getting selection request events, but we don't have + a window system. */ + emacs_abort (); +#endif + } + } +} + +/* Process any events that are not user-visible, run timer events that + are ripe, and return, without reading any user-visible events. */ + +void +swallow_events (bool do_display) +{ + unsigned old_timers_run; + + process_special_events (); + + old_timers_run = timers_run; + get_input_pending (READABLE_EVENTS_DO_TIMERS_NOW); + + if (!input_pending && timers_run != old_timers_run && do_display) + redisplay_preserve_echo_area (7); +} + +/* Record the start of when Emacs is idle, + for the sake of running idle-time timers. */ + +static void +timer_start_idle (void) +{ + /* If we are already in the idle state, do nothing. */ + if (timespec_valid_p (timer_idleness_start_time)) + return; + + timer_idleness_start_time = current_timespec (); + timer_last_idleness_start_time = timer_idleness_start_time; + + /* Mark all idle-time timers as once again candidates for running. */ + call0 (intern ("internal-timer-start-idle")); +} + +/* Record that Emacs is no longer idle, so stop running idle-time timers. */ + +static void +timer_stop_idle (void) +{ + timer_idleness_start_time = invalid_timespec (); +} + +/* Resume idle timer from last idle start time. */ + +static void +timer_resume_idle (void) +{ + if (timespec_valid_p (timer_idleness_start_time)) + return; + + timer_idleness_start_time = timer_last_idleness_start_time; +} + +/* This is only for debugging. */ +struct input_event last_timer_event EXTERNALLY_VISIBLE; + +/* List of elisp functions to call, delayed because they were generated in + a context where Elisp could not be safely run (e.g. redisplay, signal, + ...). Each element has the form (FUN . ARGS). */ +Lisp_Object pending_funcalls; + +/* Return true if TIMER is a valid timer, placing its value into *RESULT. */ +static bool +decode_timer (Lisp_Object timer, struct timespec *result) +{ + Lisp_Object *vec; + + if (! (VECTORP (timer) && ASIZE (timer) == 9)) + return 0; + vec = XVECTOR (timer)->contents; + if (! NILP (vec[0])) + return 0; + if (! INTEGERP (vec[2])) + return false; + + struct lisp_time t; + if (decode_time_components (vec[1], vec[2], vec[3], vec[8], &t, 0) <= 0) + return false; + *result = lisp_to_timespec (t); + return timespec_valid_p (*result); +} + + +/* Check whether a timer has fired. To prevent larger problems we simply + disregard elements that are not proper timers. Do not make a circular + timer list for the time being. + + Returns the time to wait until the next timer fires. If a + timer is triggering now, return zero. + If no timer is active, return -1. + + If a timer is ripe, we run it, with quitting turned off. + In that case we return 0 to indicate that a new timer_check_2 call + should be done. */ + +static struct timespec +timer_check_2 (Lisp_Object timers, Lisp_Object idle_timers) +{ + struct timespec nexttime; + struct timespec now; + struct timespec idleness_now; + Lisp_Object chosen_timer; + struct gcpro gcpro1; + + nexttime = invalid_timespec (); + + chosen_timer = Qnil; + GCPRO1 (chosen_timer); + + /* First run the code that was delayed. */ + while (CONSP (pending_funcalls)) + { + Lisp_Object funcall = XCAR (pending_funcalls); + pending_funcalls = XCDR (pending_funcalls); + safe_call2 (Qapply, XCAR (funcall), XCDR (funcall)); + } + + if (CONSP (timers) || CONSP (idle_timers)) + { + now = current_timespec (); + idleness_now = (timespec_valid_p (timer_idleness_start_time) + ? timespec_sub (now, timer_idleness_start_time) + : make_timespec (0, 0)); + } + + while (CONSP (timers) || CONSP (idle_timers)) + { + Lisp_Object timer = Qnil, idle_timer = Qnil; + struct timespec timer_time, idle_timer_time; + struct timespec difference; + struct timespec timer_difference = invalid_timespec (); + struct timespec idle_timer_difference = invalid_timespec (); + bool ripe, timer_ripe = 0, idle_timer_ripe = 0; + + /* Set TIMER and TIMER_DIFFERENCE + based on the next ordinary timer. + TIMER_DIFFERENCE is the distance in time from NOW to when + this timer becomes ripe. + Skip past invalid timers and timers already handled. */ + if (CONSP (timers)) + { + timer = XCAR (timers); + if (! decode_timer (timer, &timer_time)) + { + timers = XCDR (timers); + continue; + } + + timer_ripe = timespec_cmp (timer_time, now) <= 0; + timer_difference = (timer_ripe + ? timespec_sub (now, timer_time) + : timespec_sub (timer_time, now)); + } + + /* Likewise for IDLE_TIMER and IDLE_TIMER_DIFFERENCE + based on the next idle timer. */ + if (CONSP (idle_timers)) + { + idle_timer = XCAR (idle_timers); + if (! decode_timer (idle_timer, &idle_timer_time)) + { + idle_timers = XCDR (idle_timers); + continue; + } + + idle_timer_ripe = timespec_cmp (idle_timer_time, idleness_now) <= 0; + idle_timer_difference + = (idle_timer_ripe + ? timespec_sub (idleness_now, idle_timer_time) + : timespec_sub (idle_timer_time, idleness_now)); + } + + /* Decide which timer is the next timer, + and set CHOSEN_TIMER, DIFFERENCE, and RIPE accordingly. + Also step down the list where we found that timer. */ + + if (timespec_valid_p (timer_difference) + && (! timespec_valid_p (idle_timer_difference) + || idle_timer_ripe < timer_ripe + || (idle_timer_ripe == timer_ripe + && ((timer_ripe + ? timespec_cmp (idle_timer_difference, + timer_difference) + : timespec_cmp (timer_difference, + idle_timer_difference)) + < 0)))) + { + chosen_timer = timer; + timers = XCDR (timers); + difference = timer_difference; + ripe = timer_ripe; + } + else + { + chosen_timer = idle_timer; + idle_timers = XCDR (idle_timers); + difference = idle_timer_difference; + ripe = idle_timer_ripe; + } + + /* If timer is ripe, run it if it hasn't been run. */ + if (ripe) + { + if (NILP (AREF (chosen_timer, 0))) + { + ptrdiff_t count = SPECPDL_INDEX (); + Lisp_Object old_deactivate_mark = Vdeactivate_mark; + + /* Mark the timer as triggered to prevent problems if the lisp + code fails to reschedule it right. */ + ASET (chosen_timer, 0, Qt); + + specbind (Qinhibit_quit, Qt); + + call1 (Qtimer_event_handler, chosen_timer); + Vdeactivate_mark = old_deactivate_mark; + timers_run++; + unbind_to (count, Qnil); + + /* Since we have handled the event, + we don't need to tell the caller to wake up and do it. */ + /* But the caller must still wait for the next timer, so + return 0 to indicate that. */ + } + + nexttime = make_timespec (0, 0); + break; + } + else + /* When we encounter a timer that is still waiting, + return the amount of time to wait before it is ripe. */ + { + UNGCPRO; + return difference; + } + } + + /* No timers are pending in the future. */ + /* Return 0 if we generated an event, and -1 if not. */ + UNGCPRO; + return nexttime; +} + + +/* Check whether a timer has fired. To prevent larger problems we simply + disregard elements that are not proper timers. Do not make a circular + timer list for the time being. + + Returns the time to wait until the next timer fires. + If no timer is active, return an invalid value. + + As long as any timer is ripe, we run it. */ + +struct timespec +timer_check (void) +{ + struct timespec nexttime; + Lisp_Object timers, idle_timers; + struct gcpro gcpro1, gcpro2; + + Lisp_Object tem = Vinhibit_quit; + Vinhibit_quit = Qt; + + /* We use copies of the timers' lists to allow a timer to add itself + again, without locking up Emacs if the newly added timer is + already ripe when added. */ + + /* Always consider the ordinary timers. */ + timers = Fcopy_sequence (Vtimer_list); + /* Consider the idle timers only if Emacs is idle. */ + if (timespec_valid_p (timer_idleness_start_time)) + idle_timers = Fcopy_sequence (Vtimer_idle_list); + else + idle_timers = Qnil; + + Vinhibit_quit = tem; + + GCPRO2 (timers, idle_timers); + + do + { + nexttime = timer_check_2 (timers, idle_timers); + } + while (nexttime.tv_sec == 0 && nexttime.tv_nsec == 0); + + UNGCPRO; + return nexttime; +} + +DEFUN ("current-idle-time", Fcurrent_idle_time, Scurrent_idle_time, 0, 0, 0, + doc: /* Return the current length of Emacs idleness, or nil. +The value when Emacs is idle is a list of four integers (HIGH LOW USEC PSEC) +in the same style as (current-time). + +The value when Emacs is not idle is nil. + +PSEC is a multiple of the system clock resolution. */) + (void) +{ + if (timespec_valid_p (timer_idleness_start_time)) + return make_lisp_time (timespec_sub (current_timespec (), + timer_idleness_start_time)); + + return Qnil; +} + +/* Caches for modify_event_symbol. */ +static Lisp_Object accent_key_syms; +static Lisp_Object func_key_syms; +static Lisp_Object mouse_syms; +static Lisp_Object wheel_syms; +static Lisp_Object drag_n_drop_syms; + +/* This is a list of keysym codes for special "accent" characters. + It parallels lispy_accent_keys. */ + +static const int lispy_accent_codes[] = +{ +#ifdef XK_dead_circumflex + XK_dead_circumflex, +#else + 0, +#endif +#ifdef XK_dead_grave + XK_dead_grave, +#else + 0, +#endif +#ifdef XK_dead_tilde + XK_dead_tilde, +#else + 0, +#endif +#ifdef XK_dead_diaeresis + XK_dead_diaeresis, +#else + 0, +#endif +#ifdef XK_dead_macron + XK_dead_macron, +#else + 0, +#endif +#ifdef XK_dead_degree + XK_dead_degree, +#else + 0, +#endif +#ifdef XK_dead_acute + XK_dead_acute, +#else + 0, +#endif +#ifdef XK_dead_cedilla + XK_dead_cedilla, +#else + 0, +#endif +#ifdef XK_dead_breve + XK_dead_breve, +#else + 0, +#endif +#ifdef XK_dead_ogonek + XK_dead_ogonek, +#else + 0, +#endif +#ifdef XK_dead_caron + XK_dead_caron, +#else + 0, +#endif +#ifdef XK_dead_doubleacute + XK_dead_doubleacute, +#else + 0, +#endif +#ifdef XK_dead_abovedot + XK_dead_abovedot, +#else + 0, +#endif +#ifdef XK_dead_abovering + XK_dead_abovering, +#else + 0, +#endif +#ifdef XK_dead_iota + XK_dead_iota, +#else + 0, +#endif +#ifdef XK_dead_belowdot + XK_dead_belowdot, +#else + 0, +#endif +#ifdef XK_dead_voiced_sound + XK_dead_voiced_sound, +#else + 0, +#endif +#ifdef XK_dead_semivoiced_sound + XK_dead_semivoiced_sound, +#else + 0, +#endif +#ifdef XK_dead_hook + XK_dead_hook, +#else + 0, +#endif +#ifdef XK_dead_horn + XK_dead_horn, +#else + 0, +#endif +}; + +/* This is a list of Lisp names for special "accent" characters. + It parallels lispy_accent_codes. */ + +static const char *const lispy_accent_keys[] = +{ + "dead-circumflex", + "dead-grave", + "dead-tilde", + "dead-diaeresis", + "dead-macron", + "dead-degree", + "dead-acute", + "dead-cedilla", + "dead-breve", + "dead-ogonek", + "dead-caron", + "dead-doubleacute", + "dead-abovedot", + "dead-abovering", + "dead-iota", + "dead-belowdot", + "dead-voiced-sound", + "dead-semivoiced-sound", + "dead-hook", + "dead-horn", +}; + +#ifdef HAVE_NTGUI +#define FUNCTION_KEY_OFFSET 0x0 + +const char *const lispy_function_keys[] = + { + 0, /* 0 */ + + 0, /* VK_LBUTTON 0x01 */ + 0, /* VK_RBUTTON 0x02 */ + "cancel", /* VK_CANCEL 0x03 */ + 0, /* VK_MBUTTON 0x04 */ + + 0, 0, 0, /* 0x05 .. 0x07 */ + + "backspace", /* VK_BACK 0x08 */ + "tab", /* VK_TAB 0x09 */ + + 0, 0, /* 0x0A .. 0x0B */ + + "clear", /* VK_CLEAR 0x0C */ + "return", /* VK_RETURN 0x0D */ + + 0, 0, /* 0x0E .. 0x0F */ + + 0, /* VK_SHIFT 0x10 */ + 0, /* VK_CONTROL 0x11 */ + 0, /* VK_MENU 0x12 */ + "pause", /* VK_PAUSE 0x13 */ + "capslock", /* VK_CAPITAL 0x14 */ + "kana", /* VK_KANA/VK_HANGUL 0x15 */ + 0, /* 0x16 */ + "junja", /* VK_JUNJA 0x17 */ + "final", /* VK_FINAL 0x18 */ + "kanji", /* VK_KANJI/VK_HANJA 0x19 */ + 0, /* 0x1A */ + "escape", /* VK_ESCAPE 0x1B */ + "convert", /* VK_CONVERT 0x1C */ + "non-convert", /* VK_NONCONVERT 0x1D */ + "accept", /* VK_ACCEPT 0x1E */ + "mode-change", /* VK_MODECHANGE 0x1F */ + 0, /* VK_SPACE 0x20 */ + "prior", /* VK_PRIOR 0x21 */ + "next", /* VK_NEXT 0x22 */ + "end", /* VK_END 0x23 */ + "home", /* VK_HOME 0x24 */ + "left", /* VK_LEFT 0x25 */ + "up", /* VK_UP 0x26 */ + "right", /* VK_RIGHT 0x27 */ + "down", /* VK_DOWN 0x28 */ + "select", /* VK_SELECT 0x29 */ + "print", /* VK_PRINT 0x2A */ + "execute", /* VK_EXECUTE 0x2B */ + "snapshot", /* VK_SNAPSHOT 0x2C */ + "insert", /* VK_INSERT 0x2D */ + "delete", /* VK_DELETE 0x2E */ + "help", /* VK_HELP 0x2F */ + + /* VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) */ + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, /* 0x3A .. 0x40 */ + + /* VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) */ + + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + + "lwindow", /* VK_LWIN 0x5B */ + "rwindow", /* VK_RWIN 0x5C */ + "apps", /* VK_APPS 0x5D */ + 0, /* 0x5E */ + "sleep", + "kp-0", /* VK_NUMPAD0 0x60 */ + "kp-1", /* VK_NUMPAD1 0x61 */ + "kp-2", /* VK_NUMPAD2 0x62 */ + "kp-3", /* VK_NUMPAD3 0x63 */ + "kp-4", /* VK_NUMPAD4 0x64 */ + "kp-5", /* VK_NUMPAD5 0x65 */ + "kp-6", /* VK_NUMPAD6 0x66 */ + "kp-7", /* VK_NUMPAD7 0x67 */ + "kp-8", /* VK_NUMPAD8 0x68 */ + "kp-9", /* VK_NUMPAD9 0x69 */ + "kp-multiply", /* VK_MULTIPLY 0x6A */ + "kp-add", /* VK_ADD 0x6B */ + "kp-separator", /* VK_SEPARATOR 0x6C */ + "kp-subtract", /* VK_SUBTRACT 0x6D */ + "kp-decimal", /* VK_DECIMAL 0x6E */ + "kp-divide", /* VK_DIVIDE 0x6F */ + "f1", /* VK_F1 0x70 */ + "f2", /* VK_F2 0x71 */ + "f3", /* VK_F3 0x72 */ + "f4", /* VK_F4 0x73 */ + "f5", /* VK_F5 0x74 */ + "f6", /* VK_F6 0x75 */ + "f7", /* VK_F7 0x76 */ + "f8", /* VK_F8 0x77 */ + "f9", /* VK_F9 0x78 */ + "f10", /* VK_F10 0x79 */ + "f11", /* VK_F11 0x7A */ + "f12", /* VK_F12 0x7B */ + "f13", /* VK_F13 0x7C */ + "f14", /* VK_F14 0x7D */ + "f15", /* VK_F15 0x7E */ + "f16", /* VK_F16 0x7F */ + "f17", /* VK_F17 0x80 */ + "f18", /* VK_F18 0x81 */ + "f19", /* VK_F19 0x82 */ + "f20", /* VK_F20 0x83 */ + "f21", /* VK_F21 0x84 */ + "f22", /* VK_F22 0x85 */ + "f23", /* VK_F23 0x86 */ + "f24", /* VK_F24 0x87 */ + + 0, 0, 0, 0, /* 0x88 .. 0x8B */ + 0, 0, 0, 0, /* 0x8C .. 0x8F */ + + "kp-numlock", /* VK_NUMLOCK 0x90 */ + "scroll", /* VK_SCROLL 0x91 */ + /* Not sure where the following block comes from. + Windows headers have NEC and Fujitsu specific keys in + this block, but nothing generic. */ + "kp-space", /* VK_NUMPAD_CLEAR 0x92 */ + "kp-enter", /* VK_NUMPAD_ENTER 0x93 */ + "kp-prior", /* VK_NUMPAD_PRIOR 0x94 */ + "kp-next", /* VK_NUMPAD_NEXT 0x95 */ + "kp-end", /* VK_NUMPAD_END 0x96 */ + "kp-home", /* VK_NUMPAD_HOME 0x97 */ + "kp-left", /* VK_NUMPAD_LEFT 0x98 */ + "kp-up", /* VK_NUMPAD_UP 0x99 */ + "kp-right", /* VK_NUMPAD_RIGHT 0x9A */ + "kp-down", /* VK_NUMPAD_DOWN 0x9B */ + "kp-insert", /* VK_NUMPAD_INSERT 0x9C */ + "kp-delete", /* VK_NUMPAD_DELETE 0x9D */ + + 0, 0, /* 0x9E .. 0x9F */ + + /* + * VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys. + * Used only as parameters to GetAsyncKeyState and GetKeyState. + * No other API or message will distinguish left and right keys this way. + * 0xA0 .. 0xA5 + */ + 0, 0, 0, 0, 0, 0, + + /* Multimedia keys. These are handled as WM_APPCOMMAND, which allows us + to enable them selectively, and gives access to a few more functions. + See lispy_multimedia_keys below. */ + 0, 0, 0, 0, 0, 0, 0, /* 0xA6 .. 0xAC Browser */ + 0, 0, 0, /* 0xAD .. 0xAF Volume */ + 0, 0, 0, 0, /* 0xB0 .. 0xB3 Media */ + 0, 0, 0, 0, /* 0xB4 .. 0xB7 Apps */ + + /* 0xB8 .. 0xC0 "OEM" keys - all seem to be punctuation. */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, + + /* 0xC1 - 0xDA unallocated, 0xDB-0xDF more OEM keys */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, /* 0xE0 */ + "ax", /* VK_OEM_AX 0xE1 */ + 0, /* VK_OEM_102 0xE2 */ + "ico-help", /* VK_ICO_HELP 0xE3 */ + "ico-00", /* VK_ICO_00 0xE4 */ + 0, /* VK_PROCESSKEY 0xE5 - used by IME */ + "ico-clear", /* VK_ICO_CLEAR 0xE6 */ + 0, /* VK_PACKET 0xE7 - used to pass Unicode chars */ + 0, /* 0xE8 */ + "reset", /* VK_OEM_RESET 0xE9 */ + "jump", /* VK_OEM_JUMP 0xEA */ + "oem-pa1", /* VK_OEM_PA1 0xEB */ + "oem-pa2", /* VK_OEM_PA2 0xEC */ + "oem-pa3", /* VK_OEM_PA3 0xED */ + "wsctrl", /* VK_OEM_WSCTRL 0xEE */ + "cusel", /* VK_OEM_CUSEL 0xEF */ + "oem-attn", /* VK_OEM_ATTN 0xF0 */ + "finish", /* VK_OEM_FINISH 0xF1 */ + "copy", /* VK_OEM_COPY 0xF2 */ + "auto", /* VK_OEM_AUTO 0xF3 */ + "enlw", /* VK_OEM_ENLW 0xF4 */ + "backtab", /* VK_OEM_BACKTAB 0xF5 */ + "attn", /* VK_ATTN 0xF6 */ + "crsel", /* VK_CRSEL 0xF7 */ + "exsel", /* VK_EXSEL 0xF8 */ + "ereof", /* VK_EREOF 0xF9 */ + "play", /* VK_PLAY 0xFA */ + "zoom", /* VK_ZOOM 0xFB */ + "noname", /* VK_NONAME 0xFC */ + "pa1", /* VK_PA1 0xFD */ + "oem_clear", /* VK_OEM_CLEAR 0xFE */ + 0 /* 0xFF */ + }; + +/* Some of these duplicate the "Media keys" on newer keyboards, + but they are delivered to the application in a different way. */ +static const char *const lispy_multimedia_keys[] = + { + 0, + "browser-back", + "browser-forward", + "browser-refresh", + "browser-stop", + "browser-search", + "browser-favorites", + "browser-home", + "volume-mute", + "volume-down", + "volume-up", + "media-next", + "media-previous", + "media-stop", + "media-play-pause", + "mail", + "media-select", + "app-1", + "app-2", + "bass-down", + "bass-boost", + "bass-up", + "treble-down", + "treble-up", + "mic-volume-mute", + "mic-volume-down", + "mic-volume-up", + "help", + "find", + "new", + "open", + "close", + "save", + "print", + "undo", + "redo", + "copy", + "cut", + "paste", + "mail-reply", + "mail-forward", + "mail-send", + "spell-check", + "toggle-dictate-command", + "mic-toggle", + "correction-list", + "media-play", + "media-pause", + "media-record", + "media-fast-forward", + "media-rewind", + "media-channel-up", + "media-channel-down" + }; + +#else /* not HAVE_NTGUI */ + +/* This should be dealt with in XTread_socket now, and that doesn't + depend on the client system having the Kana syms defined. See also + the XK_kana_A case below. */ +#if 0 +#ifdef XK_kana_A +static const char *const lispy_kana_keys[] = + { + /* X Keysym value */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x400 .. 0x40f */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x410 .. 0x41f */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x420 .. 0x42f */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x430 .. 0x43f */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x440 .. 0x44f */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x450 .. 0x45f */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x460 .. 0x46f */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,"overline",0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x480 .. 0x48f */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x490 .. 0x49f */ + 0, "kana-fullstop", "kana-openingbracket", "kana-closingbracket", + "kana-comma", "kana-conjunctive", "kana-WO", "kana-a", + "kana-i", "kana-u", "kana-e", "kana-o", + "kana-ya", "kana-yu", "kana-yo", "kana-tsu", + "prolongedsound", "kana-A", "kana-I", "kana-U", + "kana-E", "kana-O", "kana-KA", "kana-KI", + "kana-KU", "kana-KE", "kana-KO", "kana-SA", + "kana-SHI", "kana-SU", "kana-SE", "kana-SO", + "kana-TA", "kana-CHI", "kana-TSU", "kana-TE", + "kana-TO", "kana-NA", "kana-NI", "kana-NU", + "kana-NE", "kana-NO", "kana-HA", "kana-HI", + "kana-FU", "kana-HE", "kana-HO", "kana-MA", + "kana-MI", "kana-MU", "kana-ME", "kana-MO", + "kana-YA", "kana-YU", "kana-YO", "kana-RA", + "kana-RI", "kana-RU", "kana-RE", "kana-RO", + "kana-WA", "kana-N", "voicedsound", "semivoicedsound", + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x4e0 .. 0x4ef */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x4f0 .. 0x4ff */ + }; +#endif /* XK_kana_A */ +#endif /* 0 */ + +#define FUNCTION_KEY_OFFSET 0xff00 + +/* You'll notice that this table is arranged to be conveniently + indexed by X Windows keysym values. */ +static const char *const lispy_function_keys[] = + { + /* X Keysym value */ + + 0, 0, 0, 0, 0, 0, 0, 0, /* 0xff00...0f */ + "backspace", "tab", "linefeed", "clear", + 0, "return", 0, 0, + 0, 0, 0, "pause", /* 0xff10...1f */ + 0, 0, 0, 0, 0, 0, 0, "escape", + 0, 0, 0, 0, + 0, "kanji", "muhenkan", "henkan", /* 0xff20...2f */ + "romaji", "hiragana", "katakana", "hiragana-katakana", + "zenkaku", "hankaku", "zenkaku-hankaku", "touroku", + "massyo", "kana-lock", "kana-shift", "eisu-shift", + "eisu-toggle", /* 0xff30...3f */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xff40...4f */ + + "home", "left", "up", "right", /* 0xff50 */ /* IsCursorKey */ + "down", "prior", "next", "end", + "begin", 0, 0, 0, 0, 0, 0, 0, + "select", /* 0xff60 */ /* IsMiscFunctionKey */ + "print", + "execute", + "insert", + 0, /* 0xff64 */ + "undo", + "redo", + "menu", + "find", + "cancel", + "help", + "break", /* 0xff6b */ + + 0, 0, 0, 0, + 0, 0, 0, 0, "backtab", 0, 0, 0, /* 0xff70... */ + 0, 0, 0, 0, 0, 0, 0, "kp-numlock", /* 0xff78... */ + "kp-space", /* 0xff80 */ /* IsKeypadKey */ + 0, 0, 0, 0, 0, 0, 0, 0, + "kp-tab", /* 0xff89 */ + 0, 0, 0, + "kp-enter", /* 0xff8d */ + 0, 0, 0, + "kp-f1", /* 0xff91 */ + "kp-f2", + "kp-f3", + "kp-f4", + "kp-home", /* 0xff95 */ + "kp-left", + "kp-up", + "kp-right", + "kp-down", + "kp-prior", /* kp-page-up */ + "kp-next", /* kp-page-down */ + "kp-end", + "kp-begin", + "kp-insert", + "kp-delete", + 0, /* 0xffa0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, + "kp-multiply", /* 0xffaa */ + "kp-add", + "kp-separator", + "kp-subtract", + "kp-decimal", + "kp-divide", /* 0xffaf */ + "kp-0", /* 0xffb0 */ + "kp-1", "kp-2", "kp-3", "kp-4", "kp-5", "kp-6", "kp-7", "kp-8", "kp-9", + 0, /* 0xffba */ + 0, 0, + "kp-equal", /* 0xffbd */ + "f1", /* 0xffbe */ /* IsFunctionKey */ + "f2", + "f3", "f4", "f5", "f6", "f7", "f8", "f9", "f10", /* 0xffc0 */ + "f11", "f12", "f13", "f14", "f15", "f16", "f17", "f18", + "f19", "f20", "f21", "f22", "f23", "f24", "f25", "f26", /* 0xffd0 */ + "f27", "f28", "f29", "f30", "f31", "f32", "f33", "f34", + "f35", 0, 0, 0, 0, 0, 0, 0, /* 0xffe0 */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, /* 0xfff0 */ + 0, 0, 0, 0, 0, 0, 0, "delete" + }; + +/* ISO 9995 Function and Modifier Keys; the first byte is 0xFE. */ +#define ISO_FUNCTION_KEY_OFFSET 0xfe00 + +static const char *const iso_lispy_function_keys[] = + { + 0, 0, 0, 0, 0, 0, 0, 0, /* 0xfe00 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* 0xfe08 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* 0xfe10 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* 0xfe18 */ + "iso-lefttab", /* 0xfe20 */ + "iso-move-line-up", "iso-move-line-down", + "iso-partial-line-up", "iso-partial-line-down", + "iso-partial-space-left", "iso-partial-space-right", + "iso-set-margin-left", "iso-set-margin-right", /* 0xffe27, 28 */ + "iso-release-margin-left", "iso-release-margin-right", + "iso-release-both-margins", + "iso-fast-cursor-left", "iso-fast-cursor-right", + "iso-fast-cursor-up", "iso-fast-cursor-down", + "iso-continuous-underline", "iso-discontinuous-underline", /* 0xfe30, 31 */ + "iso-emphasize", "iso-center-object", "iso-enter", /* ... 0xfe34 */ + }; + +#endif /* not HAVE_NTGUI */ + +static Lisp_Object Vlispy_mouse_stem; + +static const char *const lispy_wheel_names[] = +{ + "wheel-up", "wheel-down", "wheel-left", "wheel-right" +}; + +/* drag-n-drop events are generated when a set of selected files are + dragged from another application and dropped onto an Emacs window. */ +static const char *const lispy_drag_n_drop_names[] = +{ + "drag-n-drop" +}; + +/* An array of symbol indexes of scroll bar parts, indexed by an enum + scroll_bar_part value. Note that Qnil corresponds to + scroll_bar_nowhere and should not appear in Lisp events. */ +static short const scroll_bar_parts[] = { + SYMBOL_INDEX (Qnil), SYMBOL_INDEX (Qabove_handle), SYMBOL_INDEX (Qhandle), + SYMBOL_INDEX (Qbelow_handle), SYMBOL_INDEX (Qup), SYMBOL_INDEX (Qdown), + SYMBOL_INDEX (Qtop), SYMBOL_INDEX (Qbottom), SYMBOL_INDEX (Qend_scroll), + SYMBOL_INDEX (Qratio), SYMBOL_INDEX (Qbefore_handle), + SYMBOL_INDEX (Qhorizontal_handle), SYMBOL_INDEX (Qafter_handle), + SYMBOL_INDEX (Qleft), SYMBOL_INDEX (Qright), SYMBOL_INDEX (Qleftmost), + SYMBOL_INDEX (Qrightmost), SYMBOL_INDEX (Qend_scroll), SYMBOL_INDEX (Qratio) +}; + +/* A vector, indexed by button number, giving the down-going location + of currently depressed buttons, both scroll bar and non-scroll bar. + + The elements have the form + (BUTTON-NUMBER MODIFIER-MASK . REST) + where REST is the cdr of a position as it would be reported in the event. + + The make_lispy_event function stores positions here to tell the + difference between click and drag events, and to store the starting + location to be included in drag events. */ + +static Lisp_Object button_down_location; + +/* Information about the most recent up-going button event: Which + button, what location, and what time. */ + +static int last_mouse_button; +static int last_mouse_x; +static int last_mouse_y; +static Time button_down_time; + +/* The number of clicks in this multiple-click. */ + +static int double_click_count; + +/* X and Y are frame-relative coordinates for a click or wheel event. + Return a Lisp-style event list. */ + +static Lisp_Object +make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y, + Time t) +{ + enum window_part part; + Lisp_Object posn = Qnil; + Lisp_Object extra_info = Qnil; + /* Coordinate pixel positions to return. */ + int xret = 0, yret = 0; + /* The window under frame pixel coordinates (x,y) */ + Lisp_Object window = f + ? window_from_coordinates (f, XINT (x), XINT (y), &part, 0) + : Qnil; + + if (WINDOWP (window)) + { + /* It's a click in window WINDOW at frame coordinates (X,Y) */ + struct window *w = XWINDOW (window); + Lisp_Object string_info = Qnil; + ptrdiff_t textpos = 0; + int col = -1, row = -1; + int dx = -1, dy = -1; + int width = -1, height = -1; + Lisp_Object object = Qnil; + + /* Pixel coordinates relative to the window corner. */ + int wx = XINT (x) - WINDOW_LEFT_EDGE_X (w); + int wy = XINT (y) - WINDOW_TOP_EDGE_Y (w); + + /* For text area clicks, return X, Y relative to the corner of + this text area. Note that dX, dY etc are set below, by + buffer_posn_from_coords. */ + if (part == ON_TEXT) + { + xret = XINT (x) - window_box_left (w, TEXT_AREA); + yret = wy - WINDOW_HEADER_LINE_HEIGHT (w); + } + /* For mode line and header line clicks, return X, Y relative to + the left window edge. Use mode_line_string to look for a + string on the click position. */ + else if (part == ON_MODE_LINE || part == ON_HEADER_LINE) + { + Lisp_Object string; + ptrdiff_t charpos; + + posn = (part == ON_MODE_LINE) ? Qmode_line : Qheader_line; + /* Note that mode_line_string takes COL, ROW as pixels and + converts them to characters. */ + col = wx; + row = wy; + string = mode_line_string (w, part, &col, &row, &charpos, + &object, &dx, &dy, &width, &height); + if (STRINGP (string)) + string_info = Fcons (string, make_number (charpos)); + textpos = -1; + + xret = wx; + yret = wy; + } + /* For fringes and margins, Y is relative to the area's (and the + window's) top edge, while X is meaningless. */ + else if (part == ON_LEFT_MARGIN || part == ON_RIGHT_MARGIN) + { + Lisp_Object string; + ptrdiff_t charpos; + + posn = (part == ON_LEFT_MARGIN) ? Qleft_margin : Qright_margin; + col = wx; + row = wy; + string = marginal_area_string (w, part, &col, &row, &charpos, + &object, &dx, &dy, &width, &height); + if (STRINGP (string)) + string_info = Fcons (string, make_number (charpos)); + xret = wx; + yret = wy - WINDOW_HEADER_LINE_HEIGHT (w); + } + else if (part == ON_LEFT_FRINGE) + { + posn = Qleft_fringe; + col = 0; + xret = wx; + dx = wx + - (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) + ? 0 : window_box_width (w, LEFT_MARGIN_AREA)); + dy = yret = wy - WINDOW_HEADER_LINE_HEIGHT (w); + } + else if (part == ON_RIGHT_FRINGE) + { + posn = Qright_fringe; + col = 0; + xret = wx; + dx = wx + - window_box_width (w, LEFT_MARGIN_AREA) + - window_box_width (w, TEXT_AREA) + - (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) + ? window_box_width (w, RIGHT_MARGIN_AREA) + : 0); + dy = yret = wy - WINDOW_HEADER_LINE_HEIGHT (w); + } + else if (part == ON_VERTICAL_BORDER) + { + posn = Qvertical_line; + width = 1; + dx = 0; + xret = wx; + dy = yret = wy; + } + else if (part == ON_VERTICAL_SCROLL_BAR) + { + posn = Qvertical_scroll_bar; + width = WINDOW_SCROLL_BAR_AREA_WIDTH (w); + dx = xret = wx; + dy = yret = wy; + } + else if (part == ON_HORIZONTAL_SCROLL_BAR) + { + posn = Qhorizontal_scroll_bar; + width = WINDOW_SCROLL_BAR_AREA_HEIGHT (w); + dx = xret = wx; + dy = yret = wy; + } + else if (part == ON_RIGHT_DIVIDER) + { + posn = Qright_divider; + width = WINDOW_RIGHT_DIVIDER_WIDTH (w); + dx = xret = wx; + dy = yret = wy; + } + else if (part == ON_BOTTOM_DIVIDER) + { + posn = Qbottom_divider; + width = WINDOW_BOTTOM_DIVIDER_WIDTH (w); + dx = xret = wx; + dy = yret = wy; + } + + /* For clicks in the text area, fringes, margins, or vertical + scroll bar, call buffer_posn_from_coords to extract TEXTPOS, + the buffer position nearest to the click. */ + if (!textpos) + { + Lisp_Object string2, object2 = Qnil; + struct display_pos p; + int dx2, dy2; + int width2, height2; + /* The pixel X coordinate passed to buffer_posn_from_coords + is the X coordinate relative to the text area for clicks + in text-area, right-margin/fringe and right-side vertical + scroll bar, zero otherwise. */ + int x2 + = (part == ON_TEXT) ? xret + : (part == ON_RIGHT_FRINGE || part == ON_RIGHT_MARGIN + || (part == ON_VERTICAL_SCROLL_BAR + && WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w))) + ? (XINT (x) - window_box_left (w, TEXT_AREA)) + : 0; + int y2 = wy; + + string2 = buffer_posn_from_coords (w, &x2, &y2, &p, + &object2, &dx2, &dy2, + &width2, &height2); + textpos = CHARPOS (p.pos); + if (col < 0) col = x2; + if (row < 0) row = y2; + if (dx < 0) dx = dx2; + if (dy < 0) dy = dy2; + if (width < 0) width = width2; + if (height < 0) height = height2; + + if (NILP (posn)) + { + posn = make_number (textpos); + if (STRINGP (string2)) + string_info = Fcons (string2, + make_number (CHARPOS (p.string_pos))); + } + if (NILP (object)) + object = object2; + } + +#ifdef HAVE_WINDOW_SYSTEM + if (IMAGEP (object)) + { + Lisp_Object image_map, hotspot; + if ((image_map = Fplist_get (XCDR (object), QCmap), + !NILP (image_map)) + && (hotspot = find_hot_spot (image_map, dx, dy), + CONSP (hotspot)) + && (hotspot = XCDR (hotspot), CONSP (hotspot))) + posn = XCAR (hotspot); + } +#endif + + /* Object info. */ + extra_info + = list3 (object, + Fcons (make_number (dx), make_number (dy)), + Fcons (make_number (width), make_number (height))); + + /* String info. */ + extra_info = Fcons (string_info, + Fcons (textpos < 0 ? Qnil : make_number (textpos), + Fcons (Fcons (make_number (col), + make_number (row)), + extra_info))); + } + else if (f != 0) + { + /* Return mouse pixel coordinates here. */ + XSETFRAME (window, f); + xret = XINT (x); + yret = XINT (y); + } + else + window = Qnil; + + return Fcons (window, + Fcons (posn, + Fcons (Fcons (make_number (xret), + make_number (yret)), + Fcons (make_number (t), + extra_info)))); +} + +/* Return non-zero if F is a GUI frame that uses some toolkit-managed + menu bar. This really means that Emacs draws and manages the menu + bar as part of its normal display, and therefore can compute its + geometry. */ +static bool +toolkit_menubar_in_use (struct frame *f) +{ +#if defined (USE_X_TOOLKIT) || defined (USE_GTK) || defined (HAVE_NS) || defined (HAVE_NTGUI) + return !(!FRAME_WINDOW_P (f)); +#else + return false; +#endif +} + +/* Build the part of Lisp event which represents scroll bar state from + EV. TYPE is one of Qvertical_scroll_bar or Qhorizontal_scroll_bar. */ + +static Lisp_Object +make_scroll_bar_position (struct input_event *ev, Lisp_Object type) +{ + return list5 (ev->frame_or_window, type, Fcons (ev->x, ev->y), + make_number (ev->timestamp), + builtin_lisp_symbol (scroll_bar_parts[ev->part])); +} + +/* Given a struct input_event, build the lisp event which represents + it. If EVENT is 0, build a mouse movement event from the mouse + movement buffer, which should have a movement event in it. + + Note that events must be passed to this function in the order they + are received; this function stores the location of button presses + in order to build drag events when the button is released. */ + +static Lisp_Object +make_lispy_event (struct input_event *event) +{ + int i; + + switch (event->kind) + { + /* A simple keystroke. */ + case ASCII_KEYSTROKE_EVENT: + case MULTIBYTE_CHAR_KEYSTROKE_EVENT: + { + Lisp_Object lispy_c; + EMACS_INT c = event->code; + if (event->kind == ASCII_KEYSTROKE_EVENT) + { + c &= 0377; + eassert (c == event->code); + /* Turn ASCII characters into control characters + when proper. */ + if (event->modifiers & ctrl_modifier) + { + c = make_ctrl_char (c); + event->modifiers &= ~ctrl_modifier; + } + } + + /* Add in the other modifier bits. The shift key was taken care + of by the X code. */ + c |= (event->modifiers + & (meta_modifier | alt_modifier + | hyper_modifier | super_modifier | ctrl_modifier)); + /* Distinguish Shift-SPC from SPC. */ + if ((event->code) == 040 + && event->modifiers & shift_modifier) + c |= shift_modifier; + button_down_time = 0; + XSETFASTINT (lispy_c, c); + return lispy_c; + } + +#ifdef HAVE_NS + /* NS_NONKEY_EVENTs are just like NON_ASCII_KEYSTROKE_EVENTs, + except that they are non-key events (last-nonmenu-event is nil). */ + case NS_NONKEY_EVENT: +#endif + + /* A function key. The symbol may need to have modifier prefixes + tacked onto it. */ + case NON_ASCII_KEYSTROKE_EVENT: + button_down_time = 0; + + for (i = 0; i < ARRAYELTS (lispy_accent_codes); i++) + if (event->code == lispy_accent_codes[i]) + return modify_event_symbol (i, + event->modifiers, + Qfunction_key, Qnil, + lispy_accent_keys, &accent_key_syms, + ARRAYELTS (lispy_accent_keys)); + +#if 0 +#ifdef XK_kana_A + if (event->code >= 0x400 && event->code < 0x500) + return modify_event_symbol (event->code - 0x400, + event->modifiers & ~shift_modifier, + Qfunction_key, Qnil, + lispy_kana_keys, &func_key_syms, + ARRAYELTS (lispy_kana_keys)); +#endif /* XK_kana_A */ +#endif /* 0 */ + +#ifdef ISO_FUNCTION_KEY_OFFSET + if (event->code < FUNCTION_KEY_OFFSET + && event->code >= ISO_FUNCTION_KEY_OFFSET) + return modify_event_symbol (event->code - ISO_FUNCTION_KEY_OFFSET, + event->modifiers, + Qfunction_key, Qnil, + iso_lispy_function_keys, &func_key_syms, + ARRAYELTS (iso_lispy_function_keys)); +#endif + + if ((FUNCTION_KEY_OFFSET <= event->code + && (event->code + < FUNCTION_KEY_OFFSET + ARRAYELTS (lispy_function_keys))) + && lispy_function_keys[event->code - FUNCTION_KEY_OFFSET]) + return modify_event_symbol (event->code - FUNCTION_KEY_OFFSET, + event->modifiers, + Qfunction_key, Qnil, + lispy_function_keys, &func_key_syms, + ARRAYELTS (lispy_function_keys)); + + /* Handle system-specific or unknown keysyms. + We need to use an alist rather than a vector as the cache + since we can't make a vector long enough. */ + if (NILP (KVAR (current_kboard, system_key_syms))) + kset_system_key_syms (current_kboard, Fcons (Qnil, Qnil)); + return modify_event_symbol (event->code, + event->modifiers, + Qfunction_key, + KVAR (current_kboard, Vsystem_key_alist), + 0, &KVAR (current_kboard, system_key_syms), + PTRDIFF_MAX); + +#ifdef HAVE_NTGUI + case MULTIMEDIA_KEY_EVENT: + if (event->code < ARRAYELTS (lispy_multimedia_keys) + && event->code > 0 && lispy_multimedia_keys[event->code]) + { + return modify_event_symbol (event->code, event->modifiers, + Qfunction_key, Qnil, + lispy_multimedia_keys, &func_key_syms, + ARRAYELTS (lispy_multimedia_keys)); + } + return Qnil; +#endif + + /* A mouse click. Figure out where it is, decide whether it's + a press, click or drag, and build the appropriate structure. */ + case MOUSE_CLICK_EVENT: +#ifdef HAVE_GPM + case GPM_CLICK_EVENT: +#endif +#ifndef USE_TOOLKIT_SCROLL_BARS + case SCROLL_BAR_CLICK_EVENT: + case HORIZONTAL_SCROLL_BAR_CLICK_EVENT: +#endif + { + int button = event->code; + bool is_double; + Lisp_Object position; + Lisp_Object *start_pos_ptr; + Lisp_Object start_pos; + + position = Qnil; + + /* Build the position as appropriate for this mouse click. */ + if (event->kind == MOUSE_CLICK_EVENT +#ifdef HAVE_GPM + || event->kind == GPM_CLICK_EVENT +#endif + ) + { + struct frame *f = XFRAME (event->frame_or_window); + int row, column; + + /* Ignore mouse events that were made on frame that + have been deleted. */ + if (! FRAME_LIVE_P (f)) + return Qnil; + + /* EVENT->x and EVENT->y are frame-relative pixel + coordinates at this place. Under old redisplay, COLUMN + and ROW are set to frame relative glyph coordinates + which are then used to determine whether this click is + in a menu (non-toolkit version). */ + if (!toolkit_menubar_in_use (f)) + { + pixel_to_glyph_coords (f, XINT (event->x), XINT (event->y), + &column, &row, NULL, 1); + + /* In the non-toolkit version, clicks on the menu bar + are ordinary button events in the event buffer. + Distinguish them, and invoke the menu. + + (In the toolkit version, the toolkit handles the + menu bar and Emacs doesn't know about it until + after the user makes a selection.) */ + if (row >= 0 && row < FRAME_MENU_BAR_LINES (f) + && (event->modifiers & down_modifier)) + { + Lisp_Object items, item; + + /* Find the menu bar item under `column'. */ + item = Qnil; + items = FRAME_MENU_BAR_ITEMS (f); + for (i = 0; i < ASIZE (items); i += 4) + { + Lisp_Object pos, string; + string = AREF (items, i + 1); + pos = AREF (items, i + 3); + if (NILP (string)) + break; + if (column >= XINT (pos) + && column < XINT (pos) + SCHARS (string)) + { + item = AREF (items, i); + break; + } + } + + /* ELisp manual 2.4b says (x y) are window + relative but code says they are + frame-relative. */ + position = list4 (event->frame_or_window, + Qmenu_bar, + Fcons (event->x, event->y), + make_number (event->timestamp)); + + return list2 (item, position); + } + } + + position = make_lispy_position (f, event->x, event->y, + event->timestamp); + } +#ifndef USE_TOOLKIT_SCROLL_BARS + else + /* It's a scrollbar click. */ + position = make_scroll_bar_position (event, Qvertical_scroll_bar); +#endif /* not USE_TOOLKIT_SCROLL_BARS */ + + if (button >= ASIZE (button_down_location)) + { + ptrdiff_t incr = button - ASIZE (button_down_location) + 1; + button_down_location = larger_vector (button_down_location, + incr, -1); + mouse_syms = larger_vector (mouse_syms, incr, -1); + } + + start_pos_ptr = aref_addr (button_down_location, button); + start_pos = *start_pos_ptr; + *start_pos_ptr = Qnil; + + { + /* On window-system frames, use the value of + double-click-fuzz as is. On other frames, interpret it + as a multiple of 1/8 characters. */ + struct frame *f; + int fuzz; + + if (WINDOWP (event->frame_or_window)) + f = XFRAME (XWINDOW (event->frame_or_window)->frame); + else if (FRAMEP (event->frame_or_window)) + f = XFRAME (event->frame_or_window); + else + emacs_abort (); + + if (FRAME_WINDOW_P (f)) + fuzz = double_click_fuzz; + else + fuzz = double_click_fuzz / 8; + + is_double = (button == last_mouse_button + && (eabs (XINT (event->x) - last_mouse_x) <= fuzz) + && (eabs (XINT (event->y) - last_mouse_y) <= fuzz) + && button_down_time != 0 + && (EQ (Vdouble_click_time, Qt) + || (NATNUMP (Vdouble_click_time) + && (event->timestamp - button_down_time + < XFASTINT (Vdouble_click_time))))); + } + + last_mouse_button = button; + last_mouse_x = XINT (event->x); + last_mouse_y = XINT (event->y); + + /* If this is a button press, squirrel away the location, so + we can decide later whether it was a click or a drag. */ + if (event->modifiers & down_modifier) + { + if (is_double) + { + double_click_count++; + event->modifiers |= ((double_click_count > 2) + ? triple_modifier + : double_modifier); + } + else + double_click_count = 1; + button_down_time = event->timestamp; + *start_pos_ptr = Fcopy_alist (position); + ignore_mouse_drag_p = 0; + } + + /* Now we're releasing a button - check the co-ordinates to + see if this was a click or a drag. */ + else if (event->modifiers & up_modifier) + { + /* If we did not see a down before this up, ignore the up. + Probably this happened because the down event chose a + menu item. It would be an annoyance to treat the + release of the button that chose the menu item as a + separate event. */ + + if (!CONSP (start_pos)) + return Qnil; + + event->modifiers &= ~up_modifier; + + { + Lisp_Object new_down, down; + EMACS_INT xdiff = double_click_fuzz, ydiff = double_click_fuzz; + + /* The third element of every position + should be the (x,y) pair. */ + down = Fcar (Fcdr (Fcdr (start_pos))); + new_down = Fcar (Fcdr (Fcdr (position))); + + if (CONSP (down) + && INTEGERP (XCAR (down)) && INTEGERP (XCDR (down))) + { + xdiff = XINT (XCAR (new_down)) - XINT (XCAR (down)); + ydiff = XINT (XCDR (new_down)) - XINT (XCDR (down)); + } + + if (ignore_mouse_drag_p) + { + event->modifiers |= click_modifier; + ignore_mouse_drag_p = 0; + } + else if (xdiff < double_click_fuzz && xdiff > - double_click_fuzz + && ydiff < double_click_fuzz && ydiff > - double_click_fuzz + /* Maybe the mouse has moved a lot, caused scrolling, and + eventually ended up at the same screen position (but + not buffer position) in which case it is a drag, not + a click. */ + /* FIXME: OTOH if the buffer position has changed + because of a timer or process filter rather than + because of mouse movement, it should be considered as + a click. But mouse-drag-region completely ignores + this case and it hasn't caused any real problem, so + it's probably OK to ignore it as well. */ + && EQ (Fcar (Fcdr (start_pos)), Fcar (Fcdr (position)))) + /* Mouse hasn't moved (much). */ + event->modifiers |= click_modifier; + else + { + button_down_time = 0; + event->modifiers |= drag_modifier; + } + + /* Don't check is_double; treat this as multiple + if the down-event was multiple. */ + if (double_click_count > 1) + event->modifiers |= ((double_click_count > 2) + ? triple_modifier + : double_modifier); + } + } + else + /* Every mouse event should either have the down_modifier or + the up_modifier set. */ + emacs_abort (); + + { + /* Get the symbol we should use for the mouse click. */ + Lisp_Object head; + + head = modify_event_symbol (button, + event->modifiers, + Qmouse_click, Vlispy_mouse_stem, + NULL, + &mouse_syms, + ASIZE (mouse_syms)); + if (event->modifiers & drag_modifier) + return list3 (head, start_pos, position); + else if (event->modifiers & (double_modifier | triple_modifier)) + return list3 (head, position, make_number (double_click_count)); + else + return list2 (head, position); + } + } + + case WHEEL_EVENT: + case HORIZ_WHEEL_EVENT: + { + Lisp_Object position; + Lisp_Object head; + + /* Build the position as appropriate for this mouse click. */ + struct frame *f = XFRAME (event->frame_or_window); + + /* Ignore wheel events that were made on frame that have been + deleted. */ + if (! FRAME_LIVE_P (f)) + return Qnil; + + position = make_lispy_position (f, event->x, event->y, + event->timestamp); + + /* Set double or triple modifiers to indicate the wheel speed. */ + { + /* On window-system frames, use the value of + double-click-fuzz as is. On other frames, interpret it + as a multiple of 1/8 characters. */ + struct frame *fr; + int fuzz; + int symbol_num; + bool is_double; + + if (WINDOWP (event->frame_or_window)) + fr = XFRAME (XWINDOW (event->frame_or_window)->frame); + else if (FRAMEP (event->frame_or_window)) + fr = XFRAME (event->frame_or_window); + else + emacs_abort (); + + fuzz = FRAME_WINDOW_P (fr) + ? double_click_fuzz : double_click_fuzz / 8; + + if (event->modifiers & up_modifier) + { + /* Emit a wheel-up event. */ + event->modifiers &= ~up_modifier; + symbol_num = 0; + } + else if (event->modifiers & down_modifier) + { + /* Emit a wheel-down event. */ + event->modifiers &= ~down_modifier; + symbol_num = 1; + } + else + /* Every wheel event should either have the down_modifier or + the up_modifier set. */ + emacs_abort (); + + if (event->kind == HORIZ_WHEEL_EVENT) + symbol_num += 2; + + is_double = (last_mouse_button == - (1 + symbol_num) + && (eabs (XINT (event->x) - last_mouse_x) <= fuzz) + && (eabs (XINT (event->y) - last_mouse_y) <= fuzz) + && button_down_time != 0 + && (EQ (Vdouble_click_time, Qt) + || (NATNUMP (Vdouble_click_time) + && (event->timestamp - button_down_time + < XFASTINT (Vdouble_click_time))))); + if (is_double) + { + double_click_count++; + event->modifiers |= ((double_click_count > 2) + ? triple_modifier + : double_modifier); + } + else + { + double_click_count = 1; + event->modifiers |= click_modifier; + } + + button_down_time = event->timestamp; + /* Use a negative value to distinguish wheel from mouse button. */ + last_mouse_button = - (1 + symbol_num); + last_mouse_x = XINT (event->x); + last_mouse_y = XINT (event->y); + + /* Get the symbol we should use for the wheel event. */ + head = modify_event_symbol (symbol_num, + event->modifiers, + Qmouse_click, + Qnil, + lispy_wheel_names, + &wheel_syms, + ASIZE (wheel_syms)); + } + + if (event->modifiers & (double_modifier | triple_modifier)) + return list3 (head, position, make_number (double_click_count)); + else + return list2 (head, position); + } + + +#ifdef USE_TOOLKIT_SCROLL_BARS + + /* We don't have down and up events if using toolkit scroll bars, + so make this always a click event. Store in the `part' of + the Lisp event a symbol which maps to the following actions: + + `above_handle' page up + `below_handle' page down + `up' line up + `down' line down + `top' top of buffer + `bottom' bottom of buffer + `handle' thumb has been dragged. + `end-scroll' end of interaction with scroll bar + + The incoming input_event contains in its `part' member an + index of type `enum scroll_bar_part' which we can use as an + index in scroll_bar_parts to get the appropriate symbol. */ + + case SCROLL_BAR_CLICK_EVENT: + { + Lisp_Object position, head; + + position = make_scroll_bar_position (event, Qvertical_scroll_bar); + + /* Always treat scroll bar events as clicks. */ + event->modifiers |= click_modifier; + event->modifiers &= ~up_modifier; + + if (event->code >= ASIZE (mouse_syms)) + mouse_syms = larger_vector (mouse_syms, + event->code - ASIZE (mouse_syms) + 1, + -1); + + /* Get the symbol we should use for the mouse click. */ + head = modify_event_symbol (event->code, + event->modifiers, + Qmouse_click, + Vlispy_mouse_stem, + NULL, &mouse_syms, + ASIZE (mouse_syms)); + return list2 (head, position); + } + + case HORIZONTAL_SCROLL_BAR_CLICK_EVENT: + { + Lisp_Object position, head; + + position = make_scroll_bar_position (event, Qhorizontal_scroll_bar); + + /* Always treat scroll bar events as clicks. */ + event->modifiers |= click_modifier; + event->modifiers &= ~up_modifier; + + if (event->code >= ASIZE (mouse_syms)) + mouse_syms = larger_vector (mouse_syms, + event->code - ASIZE (mouse_syms) + 1, + -1); + + /* Get the symbol we should use for the mouse click. */ + head = modify_event_symbol (event->code, + event->modifiers, + Qmouse_click, + Vlispy_mouse_stem, + NULL, &mouse_syms, + ASIZE (mouse_syms)); + return list2 (head, position); + } + +#endif /* USE_TOOLKIT_SCROLL_BARS */ + + case DRAG_N_DROP_EVENT: + { + struct frame *f; + Lisp_Object head, position; + Lisp_Object files; + + f = XFRAME (event->frame_or_window); + files = event->arg; + + /* Ignore mouse events that were made on frames that + have been deleted. */ + if (! FRAME_LIVE_P (f)) + return Qnil; + + position = make_lispy_position (f, event->x, event->y, + event->timestamp); + + head = modify_event_symbol (0, event->modifiers, + Qdrag_n_drop, Qnil, + lispy_drag_n_drop_names, + &drag_n_drop_syms, 1); + return list3 (head, position, files); + } + +#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ + || defined (HAVE_NS) || defined (USE_GTK) + case MENU_BAR_EVENT: + if (EQ (event->arg, event->frame_or_window)) + /* This is the prefix key. We translate this to + `(menu_bar)' because the code in keyboard.c for menu + events, which we use, relies on this. */ + return list1 (Qmenu_bar); + return event->arg; +#endif + + case SELECT_WINDOW_EVENT: + /* Make an event (select-window (WINDOW)). */ + return list2 (Qselect_window, list1 (event->frame_or_window)); + + case TOOL_BAR_EVENT: + if (EQ (event->arg, event->frame_or_window)) + /* This is the prefix key. We translate this to + `(tool_bar)' because the code in keyboard.c for tool bar + events, which we use, relies on this. */ + return list1 (Qtool_bar); + else if (SYMBOLP (event->arg)) + return apply_modifiers (event->modifiers, event->arg); + return event->arg; + + case USER_SIGNAL_EVENT: + /* A user signal. */ + { + char *name = find_user_signal_name (event->code); + if (!name) + emacs_abort (); + return intern (name); + } + + case SAVE_SESSION_EVENT: + return Qsave_session; + +#ifdef HAVE_DBUS + case DBUS_EVENT: + { + return Fcons (Qdbus_event, event->arg); + } +#endif /* HAVE_DBUS */ + +#if defined HAVE_GFILENOTIFY || defined HAVE_INOTIFY + case FILE_NOTIFY_EVENT: + { + return Fcons (Qfile_notify, event->arg); + } +#endif /* defined HAVE_GFILENOTIFY || defined HAVE_INOTIFY */ + + case CONFIG_CHANGED_EVENT: + return list3 (Qconfig_changed_event, + event->arg, event->frame_or_window); + + /* The 'kind' field of the event is something we don't recognize. */ + default: + emacs_abort (); + } +} + +static Lisp_Object +make_lispy_movement (struct frame *frame, Lisp_Object bar_window, enum scroll_bar_part part, + Lisp_Object x, Lisp_Object y, Time t) +{ + /* Is it a scroll bar movement? */ + if (frame && ! NILP (bar_window)) + { + Lisp_Object part_sym; + + part_sym = builtin_lisp_symbol (scroll_bar_parts[part]); + return list2 (Qscroll_bar_movement, + list5 (bar_window, + Qvertical_scroll_bar, + Fcons (x, y), + make_number (t), + part_sym)); + } + /* Or is it an ordinary mouse movement? */ + else + { + Lisp_Object position; + position = make_lispy_position (frame, x, y, t); + return list2 (Qmouse_movement, position); + } +} + +/* Construct a switch frame event. */ +static Lisp_Object +make_lispy_switch_frame (Lisp_Object frame) +{ + return list2 (Qswitch_frame, frame); +} + +static Lisp_Object +make_lispy_focus_in (Lisp_Object frame) +{ + return list2 (Qfocus_in, frame); +} + +#ifdef HAVE_WINDOW_SYSTEM + +static Lisp_Object +make_lispy_focus_out (Lisp_Object frame) +{ + return list2 (Qfocus_out, frame); +} + +#endif /* HAVE_WINDOW_SYSTEM */ + +/* Manipulating modifiers. */ + +/* Parse the name of SYMBOL, and return the set of modifiers it contains. + + If MODIFIER_END is non-zero, set *MODIFIER_END to the position in + SYMBOL's name of the end of the modifiers; the string from this + position is the unmodified symbol name. + + This doesn't use any caches. */ + +static int +parse_modifiers_uncached (Lisp_Object symbol, ptrdiff_t *modifier_end) +{ + Lisp_Object name; + ptrdiff_t i; + int modifiers; + + CHECK_SYMBOL (symbol); + + modifiers = 0; + name = SYMBOL_NAME (symbol); + + for (i = 0; i < SBYTES (name) - 1; ) + { + ptrdiff_t this_mod_end = 0; + int this_mod = 0; + + /* See if the name continues with a modifier word. + Check that the word appears, but don't check what follows it. + Set this_mod and this_mod_end to record what we find. */ + + switch (SREF (name, i)) + { +#define SINGLE_LETTER_MOD(BIT) \ + (this_mod_end = i + 1, this_mod = BIT) + + case 'A': + SINGLE_LETTER_MOD (alt_modifier); + break; + + case 'C': + SINGLE_LETTER_MOD (ctrl_modifier); + break; + + case 'H': + SINGLE_LETTER_MOD (hyper_modifier); + break; + + case 'M': + SINGLE_LETTER_MOD (meta_modifier); + break; + + case 'S': + SINGLE_LETTER_MOD (shift_modifier); + break; + + case 's': + SINGLE_LETTER_MOD (super_modifier); + break; + +#undef SINGLE_LETTER_MOD + +#define MULTI_LETTER_MOD(BIT, NAME, LEN) \ + if (i + LEN + 1 <= SBYTES (name) \ + && ! memcmp (SDATA (name) + i, NAME, LEN)) \ + { \ + this_mod_end = i + LEN; \ + this_mod = BIT; \ + } + + case 'd': + MULTI_LETTER_MOD (drag_modifier, "drag", 4); + MULTI_LETTER_MOD (down_modifier, "down", 4); + MULTI_LETTER_MOD (double_modifier, "double", 6); + break; + + case 't': + MULTI_LETTER_MOD (triple_modifier, "triple", 6); + break; +#undef MULTI_LETTER_MOD + + } + + /* If we found no modifier, stop looking for them. */ + if (this_mod_end == 0) + break; + + /* Check there is a dash after the modifier, so that it + really is a modifier. */ + if (this_mod_end >= SBYTES (name) + || SREF (name, this_mod_end) != '-') + break; + + /* This modifier is real; look for another. */ + modifiers |= this_mod; + i = this_mod_end + 1; + } + + /* Should we include the `click' modifier? */ + if (! (modifiers & (down_modifier | drag_modifier + | double_modifier | triple_modifier)) + && i + 7 == SBYTES (name) + && memcmp (SDATA (name) + i, "mouse-", 6) == 0 + && ('0' <= SREF (name, i + 6) && SREF (name, i + 6) <= '9')) + modifiers |= click_modifier; + + if (! (modifiers & (double_modifier | triple_modifier)) + && i + 6 < SBYTES (name) + && memcmp (SDATA (name) + i, "wheel-", 6) == 0) + modifiers |= click_modifier; + + if (modifier_end) + *modifier_end = i; + + return modifiers; +} + +/* Return a symbol whose name is the modifier prefixes for MODIFIERS + prepended to the string BASE[0..BASE_LEN-1]. + This doesn't use any caches. */ +static Lisp_Object +apply_modifiers_uncached (int modifiers, char *base, int base_len, int base_len_byte) +{ + /* Since BASE could contain nulls, we can't use intern here; we have + to use Fintern, which expects a genuine Lisp_String, and keeps a + reference to it. */ + char new_mods[sizeof "A-C-H-M-S-s-down-drag-double-triple-"]; + int mod_len; + + { + char *p = new_mods; + + /* Only the event queue may use the `up' modifier; it should always + be turned into a click or drag event before presented to lisp code. */ + if (modifiers & up_modifier) + emacs_abort (); + + if (modifiers & alt_modifier) { *p++ = 'A'; *p++ = '-'; } + if (modifiers & ctrl_modifier) { *p++ = 'C'; *p++ = '-'; } + if (modifiers & hyper_modifier) { *p++ = 'H'; *p++ = '-'; } + if (modifiers & meta_modifier) { *p++ = 'M'; *p++ = '-'; } + if (modifiers & shift_modifier) { *p++ = 'S'; *p++ = '-'; } + if (modifiers & super_modifier) { *p++ = 's'; *p++ = '-'; } + if (modifiers & double_modifier) p = stpcpy (p, "double-"); + if (modifiers & triple_modifier) p = stpcpy (p, "triple-"); + if (modifiers & down_modifier) p = stpcpy (p, "down-"); + if (modifiers & drag_modifier) p = stpcpy (p, "drag-"); + /* The click modifier is denoted by the absence of other modifiers. */ + + *p = '\0'; + + mod_len = p - new_mods; + } + + { + Lisp_Object new_name; + + new_name = make_uninit_multibyte_string (mod_len + base_len, + mod_len + base_len_byte); + memcpy (SDATA (new_name), new_mods, mod_len); + memcpy (SDATA (new_name) + mod_len, base, base_len_byte); + + return Fintern (new_name, Qnil); + } +} + + +static const char *const modifier_names[] = +{ + "up", "down", "drag", "click", "double", "triple", 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, "alt", "super", "hyper", "shift", "control", "meta" +}; +#define NUM_MOD_NAMES ARRAYELTS (modifier_names) + +static Lisp_Object modifier_symbols; + +/* Return the list of modifier symbols corresponding to the mask MODIFIERS. */ +static Lisp_Object +lispy_modifier_list (int modifiers) +{ + Lisp_Object modifier_list; + int i; + + modifier_list = Qnil; + for (i = 0; (1<= table_size) + return Qnil; + + if (CONSP (*symbol_table)) + value = Fcdr (assq_no_quit (symbol_int, *symbol_table)); + + /* If *symbol_table doesn't seem to be initialized properly, fix that. + *symbol_table should be a lisp vector TABLE_SIZE elements long, + where the Nth element is the symbol for NAME_TABLE[N], or nil if + we've never used that symbol before. */ + else + { + if (! VECTORP (*symbol_table) + || ASIZE (*symbol_table) != table_size) + { + Lisp_Object size; + + XSETFASTINT (size, table_size); + *symbol_table = Fmake_vector (size, Qnil); + } + + value = AREF (*symbol_table, symbol_num); + } + + /* Have we already used this symbol before? */ + if (NILP (value)) + { + /* No; let's create it. */ + if (CONSP (name_alist_or_stem)) + value = Fcdr_safe (Fassq (symbol_int, name_alist_or_stem)); + else if (STRINGP (name_alist_or_stem)) + { + char *buf; + ptrdiff_t len = (SBYTES (name_alist_or_stem) + + sizeof "-" + INT_STRLEN_BOUND (EMACS_INT)); + USE_SAFE_ALLOCA; + buf = SAFE_ALLOCA (len); + esprintf (buf, "%s-%"pI"d", SDATA (name_alist_or_stem), + XINT (symbol_int) + 1); + value = intern (buf); + SAFE_FREE (); + } + else if (name_table != 0 && name_table[symbol_num]) + value = intern (name_table[symbol_num]); + +#ifdef HAVE_WINDOW_SYSTEM + if (NILP (value)) + { + char *name = x_get_keysym_name (symbol_num); + if (name) + value = intern (name); + } +#endif + + if (NILP (value)) + { + char buf[sizeof "key-" + INT_STRLEN_BOUND (EMACS_INT)]; + sprintf (buf, "key-%"pD"d", symbol_num); + value = intern (buf); + } + + if (CONSP (*symbol_table)) + *symbol_table = Fcons (Fcons (symbol_int, value), *symbol_table); + else + ASET (*symbol_table, symbol_num, value); + + /* Fill in the cache entries for this symbol; this also + builds the Qevent_symbol_elements property, which the user + cares about. */ + apply_modifiers (modifiers & click_modifier, value); + Fput (value, Qevent_kind, symbol_kind); + } + + /* Apply modifiers to that symbol. */ + return apply_modifiers (modifiers, value); +} + +/* Convert a list that represents an event type, + such as (ctrl meta backspace), into the usual representation of that + event type as a number or a symbol. */ + +DEFUN ("event-convert-list", Fevent_convert_list, Sevent_convert_list, 1, 1, 0, + doc: /* Convert the event description list EVENT-DESC to an event type. +EVENT-DESC should contain one base event type (a character or symbol) +and zero or more modifier names (control, meta, hyper, super, shift, alt, +drag, down, double or triple). The base must be last. +The return value is an event type (a character or symbol) which +has the same base event type and all the specified modifiers. */) + (Lisp_Object event_desc) +{ + Lisp_Object base; + int modifiers = 0; + Lisp_Object rest; + + base = Qnil; + rest = event_desc; + while (CONSP (rest)) + { + Lisp_Object elt; + int this = 0; + + elt = XCAR (rest); + rest = XCDR (rest); + + /* Given a symbol, see if it is a modifier name. */ + if (SYMBOLP (elt) && CONSP (rest)) + this = parse_solitary_modifier (elt); + + if (this != 0) + modifiers |= this; + else if (!NILP (base)) + error ("Two bases given in one event"); + else + base = elt; + + } + + /* Let the symbol A refer to the character A. */ + if (SYMBOLP (base) && SCHARS (SYMBOL_NAME (base)) == 1) + XSETINT (base, SREF (SYMBOL_NAME (base), 0)); + + if (INTEGERP (base)) + { + /* Turn (shift a) into A. */ + if ((modifiers & shift_modifier) != 0 + && (XINT (base) >= 'a' && XINT (base) <= 'z')) + { + XSETINT (base, XINT (base) - ('a' - 'A')); + modifiers &= ~shift_modifier; + } + + /* Turn (control a) into C-a. */ + if (modifiers & ctrl_modifier) + return make_number ((modifiers & ~ctrl_modifier) + | make_ctrl_char (XINT (base))); + else + return make_number (modifiers | XINT (base)); + } + else if (SYMBOLP (base)) + return apply_modifiers (modifiers, base); + else + error ("Invalid base event"); +} + +/* Try to recognize SYMBOL as a modifier name. + Return the modifier flag bit, or 0 if not recognized. */ + +int +parse_solitary_modifier (Lisp_Object symbol) +{ + Lisp_Object name = SYMBOL_NAME (symbol); + + switch (SREF (name, 0)) + { +#define SINGLE_LETTER_MOD(BIT) \ + if (SBYTES (name) == 1) \ + return BIT; + +#define MULTI_LETTER_MOD(BIT, NAME, LEN) \ + if (LEN == SBYTES (name) \ + && ! memcmp (SDATA (name), NAME, LEN)) \ + return BIT; + + case 'A': + SINGLE_LETTER_MOD (alt_modifier); + break; + + case 'a': + MULTI_LETTER_MOD (alt_modifier, "alt", 3); + break; + + case 'C': + SINGLE_LETTER_MOD (ctrl_modifier); + break; + + case 'c': + MULTI_LETTER_MOD (ctrl_modifier, "ctrl", 4); + MULTI_LETTER_MOD (ctrl_modifier, "control", 7); + break; + + case 'H': + SINGLE_LETTER_MOD (hyper_modifier); + break; + + case 'h': + MULTI_LETTER_MOD (hyper_modifier, "hyper", 5); + break; + + case 'M': + SINGLE_LETTER_MOD (meta_modifier); + break; + + case 'm': + MULTI_LETTER_MOD (meta_modifier, "meta", 4); + break; + + case 'S': + SINGLE_LETTER_MOD (shift_modifier); + break; + + case 's': + MULTI_LETTER_MOD (shift_modifier, "shift", 5); + MULTI_LETTER_MOD (super_modifier, "super", 5); + SINGLE_LETTER_MOD (super_modifier); + break; + + case 'd': + MULTI_LETTER_MOD (drag_modifier, "drag", 4); + MULTI_LETTER_MOD (down_modifier, "down", 4); + MULTI_LETTER_MOD (double_modifier, "double", 6); + break; + + case 't': + MULTI_LETTER_MOD (triple_modifier, "triple", 6); + break; + +#undef SINGLE_LETTER_MOD +#undef MULTI_LETTER_MOD + } + + return 0; +} + +/* Return true if EVENT is a list whose elements are all integers or symbols. + Such a list is not valid as an event, + but it can be a Lucid-style event type list. */ + +bool +lucid_event_type_list_p (Lisp_Object object) +{ + Lisp_Object tail; + + if (! CONSP (object)) + return 0; + + if (EQ (XCAR (object), Qhelp_echo) + || EQ (XCAR (object), Qvertical_line) + || EQ (XCAR (object), Qmode_line) + || EQ (XCAR (object), Qheader_line)) + return 0; + + for (tail = object; CONSP (tail); tail = XCDR (tail)) + { + Lisp_Object elt; + elt = XCAR (tail); + if (! (INTEGERP (elt) || SYMBOLP (elt))) + return 0; + } + + return NILP (tail); +} + +/* Return true if terminal input chars are available. + Also, store the return value into INPUT_PENDING. + + Serves the purpose of ioctl (0, FIONREAD, ...) + but works even if FIONREAD does not exist. + (In fact, this may actually read some input.) + + If READABLE_EVENTS_DO_TIMERS_NOW is set in FLAGS, actually run + timer events that are ripe. + If READABLE_EVENTS_FILTER_EVENTS is set in FLAGS, ignore internal + events (FOCUS_IN_EVENT). + If READABLE_EVENTS_IGNORE_SQUEEZABLES is set in FLAGS, ignore mouse + movements and toolkit scroll bar thumb drags. */ + +static bool +get_input_pending (int flags) +{ + /* First of all, have we already counted some input? */ + input_pending = (!NILP (Vquit_flag) || readable_events (flags)); + + /* If input is being read as it arrives, and we have none, there is none. */ + if (!input_pending && (!interrupt_input || interrupts_deferred)) + { + /* Try to read some input and see how much we get. */ + gobble_input (); + input_pending = (!NILP (Vquit_flag) || readable_events (flags)); + } + + return input_pending; +} + +/* Put a BUFFER_SWITCH_EVENT in the buffer + so that read_key_sequence will notice the new current buffer. */ + +void +record_asynch_buffer_change (void) +{ + /* We don't need a buffer-switch event unless Emacs is waiting for input. + The purpose of the event is to make read_key_sequence look up the + keymaps again. If we aren't in read_key_sequence, we don't need one, + and the event could cause trouble by messing up (input-pending-p). + Note: Fwaiting_for_user_input_p always returns nil when async + subprocesses aren't supported. */ + if (!NILP (Fwaiting_for_user_input_p ())) + { + struct input_event event; + + EVENT_INIT (event); + event.kind = BUFFER_SWITCH_EVENT; + event.frame_or_window = Qnil; + event.arg = Qnil; + + /* Make sure no interrupt happens while storing the event. */ +#ifdef USABLE_SIGIO + if (interrupt_input) + kbd_buffer_store_event (&event); + else +#endif + { + stop_polling (); + kbd_buffer_store_event (&event); + start_polling (); + } + } +} + +/* Read any terminal input already buffered up by the system + into the kbd_buffer, but do not wait. + + Return the number of keyboard chars read, or -1 meaning + this is a bad time to try to read input. */ + +int +gobble_input (void) +{ + int nread = 0; + bool err = 0; + struct terminal *t; + + /* Store pending user signal events, if any. */ + store_user_signal_events (); + + /* Loop through the available terminals, and call their input hooks. */ + t = terminal_list; + while (t) + { + struct terminal *next = t->next_terminal; + + if (t->read_socket_hook) + { + int nr; + struct input_event hold_quit; + + if (input_blocked_p ()) + { + pending_signals = 1; + break; + } + + EVENT_INIT (hold_quit); + hold_quit.kind = NO_EVENT; + + /* No need for FIONREAD or fcntl; just say don't wait. */ + while ((nr = (*t->read_socket_hook) (t, &hold_quit)) > 0) + nread += nr; + + if (nr == -1) /* Not OK to read input now. */ + { + err = 1; + } + else if (nr == -2) /* Non-transient error. */ + { + /* The terminal device terminated; it should be closed. */ + + /* Kill Emacs if this was our last terminal. */ + if (!terminal_list->next_terminal) + /* Formerly simply reported no input, but that + sometimes led to a failure of Emacs to terminate. + SIGHUP seems appropriate if we can't reach the + terminal. */ + /* ??? Is it really right to send the signal just to + this process rather than to the whole process + group? Perhaps on systems with FIONREAD Emacs is + alone in its group. */ + terminate_due_to_signal (SIGHUP, 10); + + /* XXX Is calling delete_terminal safe here? It calls delete_frame. */ + { + Lisp_Object tmp; + XSETTERMINAL (tmp, t); + Fdelete_terminal (tmp, Qnoelisp); + } + } + + /* If there was no error, make sure the pointer + is visible for all frames on this terminal. */ + if (nr >= 0) + { + Lisp_Object tail, frame; + + FOR_EACH_FRAME (tail, frame) + { + struct frame *f = XFRAME (frame); + if (FRAME_TERMINAL (f) == t) + frame_make_pointer_visible (f); + } + } + + if (hold_quit.kind != NO_EVENT) + kbd_buffer_store_event (&hold_quit); + } + + t = next; + } + + if (err && !nread) + nread = -1; + + return nread; +} + +/* This is the tty way of reading available input. + + Note that each terminal device has its own `struct terminal' object, + and so this function is called once for each individual termcap + terminal. The first parameter indicates which terminal to read from. */ + +int +tty_read_avail_input (struct terminal *terminal, + struct input_event *hold_quit) +{ + /* Using KBD_BUFFER_SIZE - 1 here avoids reading more than + the kbd_buffer can really hold. That may prevent loss + of characters on some systems when input is stuffed at us. */ + unsigned char cbuf[KBD_BUFFER_SIZE - 1]; + int n_to_read, i; + struct tty_display_info *tty = terminal->display_info.tty; + int nread = 0; +#ifdef subprocesses + int buffer_free = KBD_BUFFER_SIZE - kbd_buffer_nr_stored () - 1; + + if (kbd_on_hold_p () || buffer_free <= 0) + return 0; +#endif /* subprocesses */ + + if (!terminal->name) /* Don't read from a dead terminal. */ + return 0; + + if (terminal->type != output_termcap + && terminal->type != output_msdos_raw) + emacs_abort (); + + /* XXX I think the following code should be moved to separate hook + functions in system-dependent files. */ +#ifdef WINDOWSNT + /* FIXME: AFAIK, tty_read_avail_input is not used under w32 since the non-GUI + code sets read_socket_hook to w32_console_read_socket instead! */ + return 0; +#else /* not WINDOWSNT */ + if (! tty->term_initted) /* In case we get called during bootstrap. */ + return 0; + + if (! tty->input) + return 0; /* The terminal is suspended. */ + +#ifdef MSDOS + n_to_read = dos_keysns (); + if (n_to_read == 0) + return 0; + + cbuf[0] = dos_keyread (); + nread = 1; + +#else /* not MSDOS */ +#ifdef HAVE_GPM + if (gpm_tty == tty) + { + Gpm_Event event; + struct input_event gpm_hold_quit; + int gpm, fd = gpm_fd; + + EVENT_INIT (gpm_hold_quit); + gpm_hold_quit.kind = NO_EVENT; + + /* gpm==1 if event received. + gpm==0 if the GPM daemon has closed the connection, in which case + Gpm_GetEvent closes gpm_fd and clears it to -1, which is why + we save it in `fd' so close_gpm can remove it from the + select masks. + gpm==-1 if a protocol error or EWOULDBLOCK; the latter is normal. */ + while (gpm = Gpm_GetEvent (&event), gpm == 1) { + nread += handle_one_term_event (tty, &event, &gpm_hold_quit); + } + if (gpm == 0) + /* Presumably the GPM daemon has closed the connection. */ + close_gpm (fd); + if (gpm_hold_quit.kind != NO_EVENT) + kbd_buffer_store_event (&gpm_hold_quit); + if (nread) + return nread; + } +#endif /* HAVE_GPM */ + +/* Determine how many characters we should *try* to read. */ +#ifdef USABLE_FIONREAD + /* Find out how much input is available. */ + if (ioctl (fileno (tty->input), FIONREAD, &n_to_read) < 0) + { + if (! noninteractive) + return -2; /* Close this terminal. */ + else + n_to_read = 0; + } + if (n_to_read == 0) + return 0; + if (n_to_read > sizeof cbuf) + n_to_read = sizeof cbuf; +#elif defined USG || defined CYGWIN + /* Read some input if available, but don't wait. */ + n_to_read = sizeof cbuf; + fcntl (fileno (tty->input), F_SETFL, O_NONBLOCK); +#else +# error "Cannot read without possibly delaying" +#endif + +#ifdef subprocesses + /* Don't read more than we can store. */ + if (n_to_read > buffer_free) + n_to_read = buffer_free; +#endif /* subprocesses */ + + /* Now read; for one reason or another, this will not block. + NREAD is set to the number of chars read. */ + do + { + nread = emacs_read (fileno (tty->input), (char *) cbuf, n_to_read); + /* POSIX infers that processes which are not in the session leader's + process group won't get SIGHUPs at logout time. BSDI adheres to + this part standard and returns -1 from read (0) with errno==EIO + when the control tty is taken away. + Jeffrey Honig says this is generally safe. */ + if (nread == -1 && errno == EIO) + return -2; /* Close this terminal. */ +#if defined (AIX) && defined (_BSD) + /* The kernel sometimes fails to deliver SIGHUP for ptys. + This looks incorrect, but it isn't, because _BSD causes + O_NDELAY to be defined in fcntl.h as O_NONBLOCK, + and that causes a value other than 0 when there is no input. */ + if (nread == 0) + return -2; /* Close this terminal. */ +#endif + } + while ( + /* We used to retry the read if it was interrupted. + But this does the wrong thing when O_NONBLOCK causes + an EAGAIN error. Does anybody know of a situation + where a retry is actually needed? */ +#if 0 + nread < 0 && (errno == EAGAIN || errno == EFAULT +#ifdef EBADSLT + || errno == EBADSLT +#endif + ) +#else + 0 +#endif + ); + +#ifndef USABLE_FIONREAD +#if defined (USG) || defined (CYGWIN) + fcntl (fileno (tty->input), F_SETFL, 0); +#endif /* USG or CYGWIN */ +#endif /* no FIONREAD */ + + if (nread <= 0) + return nread; + +#endif /* not MSDOS */ +#endif /* not WINDOWSNT */ + + for (i = 0; i < nread; i++) + { + struct input_event buf; + EVENT_INIT (buf); + buf.kind = ASCII_KEYSTROKE_EVENT; + buf.modifiers = 0; + if (tty->meta_key == 1 && (cbuf[i] & 0x80)) + buf.modifiers = meta_modifier; + if (tty->meta_key != 2) + cbuf[i] &= ~0x80; + + buf.code = cbuf[i]; + /* Set the frame corresponding to the active tty. Note that the + value of selected_frame is not reliable here, redisplay tends + to temporarily change it. */ + buf.frame_or_window = tty->top_frame; + buf.arg = Qnil; + + kbd_buffer_store_event (&buf); + /* Don't look at input that follows a C-g too closely. + This reduces lossage due to autorepeat on C-g. */ + if (buf.kind == ASCII_KEYSTROKE_EVENT + && buf.code == quit_char) + break; + } + + return nread; +} + +static void +handle_async_input (void) +{ +#ifdef USABLE_SIGIO + while (1) + { + int nread = gobble_input (); + /* -1 means it's not ok to read the input now. + UNBLOCK_INPUT will read it later; now, avoid infinite loop. + 0 means there was no keyboard input available. */ + if (nread <= 0) + break; + } +#endif +} + +void +process_pending_signals (void) +{ + pending_signals = 0; + handle_async_input (); + do_pending_atimers (); +} + +/* Undo any number of BLOCK_INPUT calls down to level LEVEL, + and reinvoke any pending signal if the level is now 0 and + a fatal error is not already in progress. */ + +void +unblock_input_to (int level) +{ + interrupt_input_blocked = level; + if (level == 0) + { + if (pending_signals && !fatal_error_in_progress) + process_pending_signals (); + } + else if (level < 0) + emacs_abort (); +} + +/* End critical section. + + If doing signal-driven input, and a signal came in when input was + blocked, reinvoke the signal handler now to deal with it. + + It will also process queued input, if it was not read before. + When a longer code sequence does not use block/unblock input + at all, the whole input gathered up to the next call to + unblock_input will be processed inside that call. */ + +void +unblock_input (void) +{ + unblock_input_to (interrupt_input_blocked - 1); +} + +/* Undo any number of BLOCK_INPUT calls, + and also reinvoke any pending signal. */ + +void +totally_unblock_input (void) +{ + unblock_input_to (0); +} + +#ifdef USABLE_SIGIO + +void +handle_input_available_signal (int sig) +{ + pending_signals = 1; + + if (input_available_clear_time) + *input_available_clear_time = make_timespec (0, 0); +} + +static void +deliver_input_available_signal (int sig) +{ + deliver_process_signal (sig, handle_input_available_signal); +} +#endif /* USABLE_SIGIO */ + + +/* User signal events. */ + +struct user_signal_info +{ + /* Signal number. */ + int sig; + + /* Name of the signal. */ + char *name; + + /* Number of pending signals. */ + int npending; + + struct user_signal_info *next; +}; + +/* List of user signals. */ +static struct user_signal_info *user_signals = NULL; + +void +add_user_signal (int sig, const char *name) +{ + struct sigaction action; + struct user_signal_info *p; + + for (p = user_signals; p; p = p->next) + if (p->sig == sig) + /* Already added. */ + return; + + p = xmalloc (sizeof *p); + p->sig = sig; + p->name = xstrdup (name); + p->npending = 0; + p->next = user_signals; + user_signals = p; + + emacs_sigaction_init (&action, deliver_user_signal); + sigaction (sig, &action, 0); +} + +static void +handle_user_signal (int sig) +{ + struct user_signal_info *p; + const char *special_event_name = NULL; + + if (SYMBOLP (Vdebug_on_event)) + special_event_name = SSDATA (SYMBOL_NAME (Vdebug_on_event)); + + for (p = user_signals; p; p = p->next) + if (p->sig == sig) + { + if (special_event_name + && strcmp (special_event_name, p->name) == 0) + { + /* Enter the debugger in many ways. */ + debug_on_next_call = 1; + debug_on_quit = 1; + Vquit_flag = Qt; + Vinhibit_quit = Qnil; + + /* Eat the event. */ + break; + } + + p->npending++; +#ifdef USABLE_SIGIO + if (interrupt_input) + handle_input_available_signal (sig); + else +#endif + { + /* Tell wait_reading_process_output that it needs to wake + up and look around. */ + if (input_available_clear_time) + *input_available_clear_time = make_timespec (0, 0); + } + break; + } +} + +static void +deliver_user_signal (int sig) +{ + deliver_process_signal (sig, handle_user_signal); +} + +static char * +find_user_signal_name (int sig) +{ + struct user_signal_info *p; + + for (p = user_signals; p; p = p->next) + if (p->sig == sig) + return p->name; + + return NULL; +} + +static void +store_user_signal_events (void) +{ + struct user_signal_info *p; + struct input_event buf; + bool buf_initialized = 0; + + for (p = user_signals; p; p = p->next) + if (p->npending > 0) + { + if (! buf_initialized) + { + memset (&buf, 0, sizeof buf); + buf.kind = USER_SIGNAL_EVENT; + buf.frame_or_window = selected_frame; + buf_initialized = 1; + } + + do + { + buf.code = p->sig; + kbd_buffer_store_event (&buf); + p->npending--; + } + while (p->npending > 0); + } +} + + +static void menu_bar_item (Lisp_Object, Lisp_Object, Lisp_Object, void *); +static Lisp_Object menu_bar_one_keymap_changed_items; + +/* These variables hold the vector under construction within + menu_bar_items and its subroutines, and the current index + for storing into that vector. */ +static Lisp_Object menu_bar_items_vector; +static int menu_bar_items_index; + + +static const char *separator_names[] = { + "space", + "no-line", + "single-line", + "double-line", + "single-dashed-line", + "double-dashed-line", + "shadow-etched-in", + "shadow-etched-out", + "shadow-etched-in-dash", + "shadow-etched-out-dash", + "shadow-double-etched-in", + "shadow-double-etched-out", + "shadow-double-etched-in-dash", + "shadow-double-etched-out-dash", + 0, +}; + +/* Return true if LABEL specifies a separator. */ + +bool +menu_separator_name_p (const char *label) +{ + if (!label) + return 0; + else if (strlen (label) > 3 + && memcmp (label, "--", 2) == 0 + && label[2] != '-') + { + int i; + label += 2; + for (i = 0; separator_names[i]; ++i) + if (strcmp (label, separator_names[i]) == 0) + return 1; + } + else + { + /* It's a separator if it contains only dashes. */ + while (*label == '-') + ++label; + return (*label == 0); + } + + return 0; +} + + +/* Return a vector of menu items for a menu bar, appropriate + to the current buffer. Each item has three elements in the vector: + KEY STRING MAPLIST. + + OLD is an old vector we can optionally reuse, or nil. */ + +Lisp_Object +menu_bar_items (Lisp_Object old) +{ + /* The number of keymaps we're scanning right now, and the number of + keymaps we have allocated space for. */ + ptrdiff_t nmaps; + + /* maps[0..nmaps-1] are the prefix definitions of KEYBUF[0..t-1] + in the current keymaps, or nil where it is not a prefix. */ + Lisp_Object *maps; + + Lisp_Object mapsbuf[3]; + Lisp_Object def, tail; + + ptrdiff_t mapno; + Lisp_Object oquit; + + USE_SAFE_ALLOCA; + + /* In order to build the menus, we need to call the keymap + accessors. They all call QUIT. But this function is called + during redisplay, during which a quit is fatal. So inhibit + quitting while building the menus. + We do this instead of specbind because (1) errors will clear it anyway + and (2) this avoids risk of specpdl overflow. */ + oquit = Vinhibit_quit; + Vinhibit_quit = Qt; + + if (!NILP (old)) + menu_bar_items_vector = old; + else + menu_bar_items_vector = Fmake_vector (make_number (24), Qnil); + menu_bar_items_index = 0; + + /* Build our list of keymaps. + If we recognize a function key and replace its escape sequence in + keybuf with its symbol, or if the sequence starts with a mouse + click and we need to switch buffers, we jump back here to rebuild + the initial keymaps from the current buffer. */ + { + Lisp_Object *tmaps; + + /* Should overriding-terminal-local-map and overriding-local-map apply? */ + if (!NILP (Voverriding_local_map_menu_flag) + && !NILP (Voverriding_local_map)) + { + /* Yes, use them (if non-nil) as well as the global map. */ + maps = mapsbuf; + nmaps = 0; + if (!NILP (KVAR (current_kboard, Voverriding_terminal_local_map))) + maps[nmaps++] = KVAR (current_kboard, Voverriding_terminal_local_map); + if (!NILP (Voverriding_local_map)) + maps[nmaps++] = Voverriding_local_map; + } + else + { + /* No, so use major and minor mode keymaps and keymap property. + Note that menu-bar bindings in the local-map and keymap + properties may not work reliable, as they are only + recognized when the menu-bar (or mode-line) is updated, + which does not normally happen after every command. */ + Lisp_Object tem; + ptrdiff_t nminor; + nminor = current_minor_maps (NULL, &tmaps); + SAFE_NALLOCA (maps, 1, nminor + 4); + nmaps = 0; + tem = KVAR (current_kboard, Voverriding_terminal_local_map); + if (!NILP (tem) && !NILP (Voverriding_local_map_menu_flag)) + maps[nmaps++] = tem; + if (tem = get_local_map (PT, current_buffer, Qkeymap), !NILP (tem)) + maps[nmaps++] = tem; + memcpy (maps + nmaps, tmaps, nminor * sizeof (maps[0])); + nmaps += nminor; + maps[nmaps++] = get_local_map (PT, current_buffer, Qlocal_map); + } + maps[nmaps++] = current_global_map; + } + + /* Look up in each map the dummy prefix key `menu-bar'. */ + + for (mapno = nmaps - 1; mapno >= 0; mapno--) + if (!NILP (maps[mapno])) + { + def = get_keymap (access_keymap (maps[mapno], Qmenu_bar, 1, 0, 1), + 0, 1); + if (CONSP (def)) + { + menu_bar_one_keymap_changed_items = Qnil; + map_keymap_canonical (def, menu_bar_item, Qnil, NULL); + } + } + + /* Move to the end those items that should be at the end. */ + + for (tail = Vmenu_bar_final_items; CONSP (tail); tail = XCDR (tail)) + { + int i; + int end = menu_bar_items_index; + + for (i = 0; i < end; i += 4) + if (EQ (XCAR (tail), AREF (menu_bar_items_vector, i))) + { + Lisp_Object tem0, tem1, tem2, tem3; + /* Move the item at index I to the end, + shifting all the others forward. */ + tem0 = AREF (menu_bar_items_vector, i + 0); + tem1 = AREF (menu_bar_items_vector, i + 1); + tem2 = AREF (menu_bar_items_vector, i + 2); + tem3 = AREF (menu_bar_items_vector, i + 3); + if (end > i + 4) + memmove (aref_addr (menu_bar_items_vector, i), + aref_addr (menu_bar_items_vector, i + 4), + (end - i - 4) * word_size); + ASET (menu_bar_items_vector, end - 4, tem0); + ASET (menu_bar_items_vector, end - 3, tem1); + ASET (menu_bar_items_vector, end - 2, tem2); + ASET (menu_bar_items_vector, end - 1, tem3); + break; + } + } + + /* Add nil, nil, nil, nil at the end. */ + { + int i = menu_bar_items_index; + if (i + 4 > ASIZE (menu_bar_items_vector)) + menu_bar_items_vector + = larger_vector (menu_bar_items_vector, 4, -1); + /* Add this item. */ + ASET (menu_bar_items_vector, i, Qnil); i++; + ASET (menu_bar_items_vector, i, Qnil); i++; + ASET (menu_bar_items_vector, i, Qnil); i++; + ASET (menu_bar_items_vector, i, Qnil); i++; + menu_bar_items_index = i; + } + + Vinhibit_quit = oquit; + SAFE_FREE (); + return menu_bar_items_vector; +} + +/* Add one item to menu_bar_items_vector, for KEY, ITEM_STRING and DEF. + If there's already an item for KEY, add this DEF to it. */ + +Lisp_Object item_properties; + +static void +menu_bar_item (Lisp_Object key, Lisp_Object item, Lisp_Object dummy1, void *dummy2) +{ + struct gcpro gcpro1; + int i; + bool parsed; + Lisp_Object tem; + + if (EQ (item, Qundefined)) + { + /* If a map has an explicit `undefined' as definition, + discard any previously made menu bar item. */ + + for (i = 0; i < menu_bar_items_index; i += 4) + if (EQ (key, AREF (menu_bar_items_vector, i))) + { + if (menu_bar_items_index > i + 4) + memmove (aref_addr (menu_bar_items_vector, i), + aref_addr (menu_bar_items_vector, i + 4), + (menu_bar_items_index - i - 4) * word_size); + menu_bar_items_index -= 4; + } + } + + /* If this keymap has already contributed to this KEY, + don't contribute to it a second time. */ + tem = Fmemq (key, menu_bar_one_keymap_changed_items); + if (!NILP (tem) || NILP (item)) + return; + + menu_bar_one_keymap_changed_items + = Fcons (key, menu_bar_one_keymap_changed_items); + + /* We add to menu_bar_one_keymap_changed_items before doing the + parse_menu_item, so that if it turns out it wasn't a menu item, + it still correctly hides any further menu item. */ + GCPRO1 (key); + parsed = parse_menu_item (item, 1); + UNGCPRO; + if (!parsed) + return; + + item = AREF (item_properties, ITEM_PROPERTY_DEF); + + /* Find any existing item for this KEY. */ + for (i = 0; i < menu_bar_items_index; i += 4) + if (EQ (key, AREF (menu_bar_items_vector, i))) + break; + + /* If we did not find this KEY, add it at the end. */ + if (i == menu_bar_items_index) + { + /* If vector is too small, get a bigger one. */ + if (i + 4 > ASIZE (menu_bar_items_vector)) + menu_bar_items_vector = larger_vector (menu_bar_items_vector, 4, -1); + /* Add this item. */ + ASET (menu_bar_items_vector, i, key); i++; + ASET (menu_bar_items_vector, i, + AREF (item_properties, ITEM_PROPERTY_NAME)); i++; + ASET (menu_bar_items_vector, i, list1 (item)); i++; + ASET (menu_bar_items_vector, i, make_number (0)); i++; + menu_bar_items_index = i; + } + /* We did find an item for this KEY. Add ITEM to its list of maps. */ + else + { + Lisp_Object old; + old = AREF (menu_bar_items_vector, i + 2); + /* If the new and the old items are not both keymaps, + the lookup will only find `item'. */ + item = Fcons (item, KEYMAPP (item) && KEYMAPP (XCAR (old)) ? old : Qnil); + ASET (menu_bar_items_vector, i + 2, item); + } +} + + /* This is used as the handler when calling menu_item_eval_property. */ +static Lisp_Object +menu_item_eval_property_1 (Lisp_Object arg) +{ + /* If we got a quit from within the menu computation, + quit all the way out of it. This takes care of C-] in the debugger. */ + if (CONSP (arg) && EQ (XCAR (arg), Qquit)) + Fsignal (Qquit, Qnil); + + return Qnil; +} + +static Lisp_Object +eval_dyn (Lisp_Object form) +{ + return Feval (form, Qnil); +} + +/* Evaluate an expression and return the result (or nil if something + went wrong). Used to evaluate dynamic parts of menu items. */ +Lisp_Object +menu_item_eval_property (Lisp_Object sexpr) +{ + ptrdiff_t count = SPECPDL_INDEX (); + Lisp_Object val; + specbind (Qinhibit_redisplay, Qt); + val = internal_condition_case_1 (eval_dyn, sexpr, Qerror, + menu_item_eval_property_1); + return unbind_to (count, val); +} + +/* This function parses a menu item and leaves the result in the + vector item_properties. + ITEM is a key binding, a possible menu item. + INMENUBAR is > 0 when this is considered for an entry in a menu bar + top level. + INMENUBAR is < 0 when this is considered for an entry in a keyboard menu. + parse_menu_item returns true if the item is a menu item and false + otherwise. */ + +bool +parse_menu_item (Lisp_Object item, int inmenubar) +{ + Lisp_Object def, tem, item_string, start; + Lisp_Object filter; + Lisp_Object keyhint; + int i; + + filter = Qnil; + keyhint = Qnil; + + if (!CONSP (item)) + return 0; + + /* Create item_properties vector if necessary. */ + if (NILP (item_properties)) + item_properties + = Fmake_vector (make_number (ITEM_PROPERTY_ENABLE + 1), Qnil); + + /* Initialize optional entries. */ + for (i = ITEM_PROPERTY_DEF; i < ITEM_PROPERTY_ENABLE; i++) + ASET (item_properties, i, Qnil); + ASET (item_properties, ITEM_PROPERTY_ENABLE, Qt); + + /* Save the item here to protect it from GC. */ + ASET (item_properties, ITEM_PROPERTY_ITEM, item); + + item_string = XCAR (item); + + start = item; + item = XCDR (item); + if (STRINGP (item_string)) + { + /* Old format menu item. */ + ASET (item_properties, ITEM_PROPERTY_NAME, item_string); + + /* Maybe help string. */ + if (CONSP (item) && STRINGP (XCAR (item))) + { + ASET (item_properties, ITEM_PROPERTY_HELP, XCAR (item)); + start = item; + item = XCDR (item); + } + + /* Maybe an obsolete key binding cache. */ + if (CONSP (item) && CONSP (XCAR (item)) + && (NILP (XCAR (XCAR (item))) + || VECTORP (XCAR (XCAR (item))))) + item = XCDR (item); + + /* This is the real definition--the function to run. */ + ASET (item_properties, ITEM_PROPERTY_DEF, item); + + /* Get enable property, if any. */ + if (SYMBOLP (item)) + { + tem = Fget (item, Qmenu_enable); + if (!NILP (Venable_disabled_menus_and_buttons)) + ASET (item_properties, ITEM_PROPERTY_ENABLE, Qt); + else if (!NILP (tem)) + ASET (item_properties, ITEM_PROPERTY_ENABLE, tem); + } + } + else if (EQ (item_string, Qmenu_item) && CONSP (item)) + { + /* New format menu item. */ + ASET (item_properties, ITEM_PROPERTY_NAME, XCAR (item)); + start = XCDR (item); + if (CONSP (start)) + { + /* We have a real binding. */ + ASET (item_properties, ITEM_PROPERTY_DEF, XCAR (start)); + + item = XCDR (start); + /* Is there an obsolete cache list with key equivalences. */ + if (CONSP (item) && CONSP (XCAR (item))) + item = XCDR (item); + + /* Parse properties. */ + while (CONSP (item) && CONSP (XCDR (item))) + { + tem = XCAR (item); + item = XCDR (item); + + if (EQ (tem, QCenable)) + { + if (!NILP (Venable_disabled_menus_and_buttons)) + ASET (item_properties, ITEM_PROPERTY_ENABLE, Qt); + else + ASET (item_properties, ITEM_PROPERTY_ENABLE, XCAR (item)); + } + else if (EQ (tem, QCvisible)) + { + /* If got a visible property and that evaluates to nil + then ignore this item. */ + tem = menu_item_eval_property (XCAR (item)); + if (NILP (tem)) + return 0; + } + else if (EQ (tem, QChelp)) + ASET (item_properties, ITEM_PROPERTY_HELP, XCAR (item)); + else if (EQ (tem, QCfilter)) + filter = item; + else if (EQ (tem, QCkey_sequence)) + { + tem = XCAR (item); + if (SYMBOLP (tem) || STRINGP (tem) || VECTORP (tem)) + /* Be GC protected. Set keyhint to item instead of tem. */ + keyhint = item; + } + else if (EQ (tem, QCkeys)) + { + tem = XCAR (item); + if (CONSP (tem) || STRINGP (tem)) + ASET (item_properties, ITEM_PROPERTY_KEYEQ, tem); + } + else if (EQ (tem, QCbutton) && CONSP (XCAR (item))) + { + Lisp_Object type; + tem = XCAR (item); + type = XCAR (tem); + if (EQ (type, QCtoggle) || EQ (type, QCradio)) + { + ASET (item_properties, ITEM_PROPERTY_SELECTED, + XCDR (tem)); + ASET (item_properties, ITEM_PROPERTY_TYPE, type); + } + } + item = XCDR (item); + } + } + else if (inmenubar || !NILP (start)) + return 0; + } + else + return 0; /* not a menu item */ + + /* If item string is not a string, evaluate it to get string. + If we don't get a string, skip this item. */ + item_string = AREF (item_properties, ITEM_PROPERTY_NAME); + if (!(STRINGP (item_string))) + { + item_string = menu_item_eval_property (item_string); + if (!STRINGP (item_string)) + return 0; + ASET (item_properties, ITEM_PROPERTY_NAME, item_string); + } + + /* If got a filter apply it on definition. */ + def = AREF (item_properties, ITEM_PROPERTY_DEF); + if (!NILP (filter)) + { + def = menu_item_eval_property (list2 (XCAR (filter), + list2 (Qquote, def))); + + ASET (item_properties, ITEM_PROPERTY_DEF, def); + } + + /* Enable or disable selection of item. */ + tem = AREF (item_properties, ITEM_PROPERTY_ENABLE); + if (!EQ (tem, Qt)) + { + tem = menu_item_eval_property (tem); + if (inmenubar && NILP (tem)) + return 0; /* Ignore disabled items in menu bar. */ + ASET (item_properties, ITEM_PROPERTY_ENABLE, tem); + } + + /* If we got no definition, this item is just unselectable text which + is OK in a submenu but not in the menubar. */ + if (NILP (def)) + return (!inmenubar); + + /* See if this is a separate pane or a submenu. */ + def = AREF (item_properties, ITEM_PROPERTY_DEF); + tem = get_keymap (def, 0, 1); + /* For a subkeymap, just record its details and exit. */ + if (CONSP (tem)) + { + ASET (item_properties, ITEM_PROPERTY_MAP, tem); + ASET (item_properties, ITEM_PROPERTY_DEF, tem); + return 1; + } + + /* At the top level in the menu bar, do likewise for commands also. + The menu bar does not display equivalent key bindings anyway. + ITEM_PROPERTY_DEF is already set up properly. */ + if (inmenubar > 0) + return 1; + + { /* This is a command. See if there is an equivalent key binding. */ + Lisp_Object keyeq = AREF (item_properties, ITEM_PROPERTY_KEYEQ); + AUTO_STRING (space_space, " "); + + /* The previous code preferred :key-sequence to :keys, so we + preserve this behavior. */ + if (STRINGP (keyeq) && !CONSP (keyhint)) + keyeq = concat2 (space_space, Fsubstitute_command_keys (keyeq)); + else + { + Lisp_Object prefix = keyeq; + Lisp_Object keys = Qnil; + + if (CONSP (prefix)) + { + def = XCAR (prefix); + prefix = XCDR (prefix); + } + else + def = AREF (item_properties, ITEM_PROPERTY_DEF); + + if (CONSP (keyhint) && !NILP (XCAR (keyhint))) + { + keys = XCAR (keyhint); + tem = Fkey_binding (keys, Qnil, Qnil, Qnil); + + /* We have a suggested key. Is it bound to the command? */ + if (NILP (tem) + || (!EQ (tem, def) + /* If the command is an alias for another + (such as lmenu.el set it up), check if the + original command matches the cached command. */ + && !(SYMBOLP (def) + && EQ (tem, XSYMBOL (def)->function)))) + keys = Qnil; + } + + if (NILP (keys)) + keys = Fwhere_is_internal (def, Qnil, Qt, Qnil, Qnil); + + if (!NILP (keys)) + { + tem = Fkey_description (keys, Qnil); + if (CONSP (prefix)) + { + if (STRINGP (XCAR (prefix))) + tem = concat2 (XCAR (prefix), tem); + if (STRINGP (XCDR (prefix))) + tem = concat2 (tem, XCDR (prefix)); + } + keyeq = concat2 (space_space, tem); + } + else + keyeq = Qnil; + } + + /* If we have an equivalent key binding, use that. */ + ASET (item_properties, ITEM_PROPERTY_KEYEQ, keyeq); + } + + /* Include this when menu help is implemented. + tem = XVECTOR (item_properties)->contents[ITEM_PROPERTY_HELP]; + if (!(NILP (tem) || STRINGP (tem))) + { + tem = menu_item_eval_property (tem); + if (!STRINGP (tem)) + tem = Qnil; + XVECTOR (item_properties)->contents[ITEM_PROPERTY_HELP] = tem; + } + */ + + /* Handle radio buttons or toggle boxes. */ + tem = AREF (item_properties, ITEM_PROPERTY_SELECTED); + if (!NILP (tem)) + ASET (item_properties, ITEM_PROPERTY_SELECTED, + menu_item_eval_property (tem)); + + return 1; +} + + + +/*********************************************************************** + Tool-bars + ***********************************************************************/ + +/* A vector holding tool bar items while they are parsed in function + tool_bar_items. Each item occupies TOOL_BAR_ITEM_NSCLOTS elements + in the vector. */ + +static Lisp_Object tool_bar_items_vector; + +/* A vector holding the result of parse_tool_bar_item. Layout is like + the one for a single item in tool_bar_items_vector. */ + +static Lisp_Object tool_bar_item_properties; + +/* Next free index in tool_bar_items_vector. */ + +static int ntool_bar_items; + +/* Function prototypes. */ + +static void init_tool_bar_items (Lisp_Object); +static void process_tool_bar_item (Lisp_Object, Lisp_Object, Lisp_Object, + void *); +static bool parse_tool_bar_item (Lisp_Object, Lisp_Object); +static void append_tool_bar_item (void); + + +/* Return a vector of tool bar items for keymaps currently in effect. + Reuse vector REUSE if non-nil. Return in *NITEMS the number of + tool bar items found. */ + +Lisp_Object +tool_bar_items (Lisp_Object reuse, int *nitems) +{ + Lisp_Object *maps; + Lisp_Object mapsbuf[3]; + ptrdiff_t nmaps, i; + Lisp_Object oquit; + Lisp_Object *tmaps; + USE_SAFE_ALLOCA; + + *nitems = 0; + + /* In order to build the menus, we need to call the keymap + accessors. They all call QUIT. But this function is called + during redisplay, during which a quit is fatal. So inhibit + quitting while building the menus. We do this instead of + specbind because (1) errors will clear it anyway and (2) this + avoids risk of specpdl overflow. */ + oquit = Vinhibit_quit; + Vinhibit_quit = Qt; + + /* Initialize tool_bar_items_vector and protect it from GC. */ + init_tool_bar_items (reuse); + + /* Build list of keymaps in maps. Set nmaps to the number of maps + to process. */ + + /* Should overriding-terminal-local-map and overriding-local-map apply? */ + if (!NILP (Voverriding_local_map_menu_flag) + && !NILP (Voverriding_local_map)) + { + /* Yes, use them (if non-nil) as well as the global map. */ + maps = mapsbuf; + nmaps = 0; + if (!NILP (KVAR (current_kboard, Voverriding_terminal_local_map))) + maps[nmaps++] = KVAR (current_kboard, Voverriding_terminal_local_map); + if (!NILP (Voverriding_local_map)) + maps[nmaps++] = Voverriding_local_map; + } + else + { + /* No, so use major and minor mode keymaps and keymap property. + Note that tool-bar bindings in the local-map and keymap + properties may not work reliable, as they are only + recognized when the tool-bar (or mode-line) is updated, + which does not normally happen after every command. */ + Lisp_Object tem; + ptrdiff_t nminor; + nminor = current_minor_maps (NULL, &tmaps); + SAFE_NALLOCA (maps, 1, nminor + 4); + nmaps = 0; + tem = KVAR (current_kboard, Voverriding_terminal_local_map); + if (!NILP (tem) && !NILP (Voverriding_local_map_menu_flag)) + maps[nmaps++] = tem; + if (tem = get_local_map (PT, current_buffer, Qkeymap), !NILP (tem)) + maps[nmaps++] = tem; + memcpy (maps + nmaps, tmaps, nminor * sizeof (maps[0])); + nmaps += nminor; + maps[nmaps++] = get_local_map (PT, current_buffer, Qlocal_map); + } + + /* Add global keymap at the end. */ + maps[nmaps++] = current_global_map; + + /* Process maps in reverse order and look up in each map the prefix + key `tool-bar'. */ + for (i = nmaps - 1; i >= 0; --i) + if (!NILP (maps[i])) + { + Lisp_Object keymap; + + keymap = get_keymap (access_keymap (maps[i], Qtool_bar, 1, 0, 1), 0, 1); + if (CONSP (keymap)) + map_keymap (keymap, process_tool_bar_item, Qnil, NULL, 1); + } + + Vinhibit_quit = oquit; + *nitems = ntool_bar_items / TOOL_BAR_ITEM_NSLOTS; + SAFE_FREE (); + return tool_bar_items_vector; +} + + +/* Process the definition of KEY which is DEF. */ + +static void +process_tool_bar_item (Lisp_Object key, Lisp_Object def, Lisp_Object data, void *args) +{ + int i; + struct gcpro gcpro1, gcpro2; + + /* Protect KEY and DEF from GC because parse_tool_bar_item may call + eval. */ + GCPRO2 (key, def); + + if (EQ (def, Qundefined)) + { + /* If a map has an explicit `undefined' as definition, + discard any previously made item. */ + for (i = 0; i < ntool_bar_items; i += TOOL_BAR_ITEM_NSLOTS) + { + Lisp_Object *v = XVECTOR (tool_bar_items_vector)->contents + i; + + if (EQ (key, v[TOOL_BAR_ITEM_KEY])) + { + if (ntool_bar_items > i + TOOL_BAR_ITEM_NSLOTS) + memmove (v, v + TOOL_BAR_ITEM_NSLOTS, + ((ntool_bar_items - i - TOOL_BAR_ITEM_NSLOTS) + * word_size)); + ntool_bar_items -= TOOL_BAR_ITEM_NSLOTS; + break; + } + } + } + else if (parse_tool_bar_item (key, def)) + /* Append a new tool bar item to tool_bar_items_vector. Accept + more than one definition for the same key. */ + append_tool_bar_item (); + + UNGCPRO; +} + +/* Access slot with index IDX of vector tool_bar_item_properties. */ +#define PROP(IDX) AREF (tool_bar_item_properties, (IDX)) +static void +set_prop (ptrdiff_t idx, Lisp_Object val) +{ + ASET (tool_bar_item_properties, idx, val); +} + + +/* Parse a tool bar item specification ITEM for key KEY and return the + result in tool_bar_item_properties. Value is false if ITEM is + invalid. + + ITEM is a list `(menu-item CAPTION BINDING PROPS...)'. + + CAPTION is the caption of the item, If it's not a string, it is + evaluated to get a string. + + BINDING is the tool bar item's binding. Tool-bar items with keymaps + as binding are currently ignored. + + The following properties are recognized: + + - `:enable FORM'. + + FORM is evaluated and specifies whether the tool bar item is + enabled or disabled. + + - `:visible FORM' + + FORM is evaluated and specifies whether the tool bar item is visible. + + - `:filter FUNCTION' + + FUNCTION is invoked with one parameter `(quote BINDING)'. Its + result is stored as the new binding. + + - `:button (TYPE SELECTED)' + + TYPE must be one of `:radio' or `:toggle'. SELECTED is evaluated + and specifies whether the button is selected (pressed) or not. + + - `:image IMAGES' + + IMAGES is either a single image specification or a vector of four + image specifications. See enum tool_bar_item_images. + + - `:help HELP-STRING'. + + Gives a help string to display for the tool bar item. + + - `:label LABEL-STRING'. + + A text label to show with the tool bar button if labels are enabled. */ + +static bool +parse_tool_bar_item (Lisp_Object key, Lisp_Object item) +{ + Lisp_Object filter = Qnil; + Lisp_Object caption; + int i; + bool have_label = 0; + + /* Definition looks like `(menu-item CAPTION BINDING PROPS...)'. + Rule out items that aren't lists, don't start with + `menu-item' or whose rest following `tool-bar-item' is not a + list. */ + if (!CONSP (item)) + return 0; + + /* As an exception, allow old-style menu separators. */ + if (STRINGP (XCAR (item))) + item = list1 (XCAR (item)); + else if (!EQ (XCAR (item), Qmenu_item) + || (item = XCDR (item), !CONSP (item))) + return 0; + + /* Create tool_bar_item_properties vector if necessary. Reset it to + defaults. */ + if (VECTORP (tool_bar_item_properties)) + { + for (i = 0; i < TOOL_BAR_ITEM_NSLOTS; ++i) + set_prop (i, Qnil); + } + else + tool_bar_item_properties + = Fmake_vector (make_number (TOOL_BAR_ITEM_NSLOTS), Qnil); + + /* Set defaults. */ + set_prop (TOOL_BAR_ITEM_KEY, key); + set_prop (TOOL_BAR_ITEM_ENABLED_P, Qt); + + /* Get the caption of the item. If the caption is not a string, + evaluate it to get a string. If we don't get a string, skip this + item. */ + caption = XCAR (item); + if (!STRINGP (caption)) + { + caption = menu_item_eval_property (caption); + if (!STRINGP (caption)) + return 0; + } + set_prop (TOOL_BAR_ITEM_CAPTION, caption); + + /* If the rest following the caption is not a list, the menu item is + either a separator, or invalid. */ + item = XCDR (item); + if (!CONSP (item)) + { + if (menu_separator_name_p (SSDATA (caption))) + { + set_prop (TOOL_BAR_ITEM_TYPE, Qt); +#if !defined (USE_GTK) && !defined (HAVE_NS) + /* If we use build_desired_tool_bar_string to render the + tool bar, the separator is rendered as an image. */ + set_prop (TOOL_BAR_ITEM_IMAGES, + (menu_item_eval_property + (Vtool_bar_separator_image_expression))); + set_prop (TOOL_BAR_ITEM_ENABLED_P, Qnil); + set_prop (TOOL_BAR_ITEM_SELECTED_P, Qnil); + set_prop (TOOL_BAR_ITEM_CAPTION, Qnil); +#endif + return 1; + } + return 0; + } + + /* Store the binding. */ + set_prop (TOOL_BAR_ITEM_BINDING, XCAR (item)); + item = XCDR (item); + + /* Ignore cached key binding, if any. */ + if (CONSP (item) && CONSP (XCAR (item))) + item = XCDR (item); + + /* Process the rest of the properties. */ + for (; CONSP (item) && CONSP (XCDR (item)); item = XCDR (XCDR (item))) + { + Lisp_Object ikey, value; + + ikey = XCAR (item); + value = XCAR (XCDR (item)); + + if (EQ (ikey, QCenable)) + { + /* `:enable FORM'. */ + if (!NILP (Venable_disabled_menus_and_buttons)) + set_prop (TOOL_BAR_ITEM_ENABLED_P, Qt); + else + set_prop (TOOL_BAR_ITEM_ENABLED_P, value); + } + else if (EQ (ikey, QCvisible)) + { + /* `:visible FORM'. If got a visible property and that + evaluates to nil then ignore this item. */ + if (NILP (menu_item_eval_property (value))) + return 0; + } + else if (EQ (ikey, QChelp)) + /* `:help HELP-STRING'. */ + set_prop (TOOL_BAR_ITEM_HELP, value); + else if (EQ (ikey, QCvert_only)) + /* `:vert-only t/nil'. */ + set_prop (TOOL_BAR_ITEM_VERT_ONLY, value); + else if (EQ (ikey, QClabel)) + { + const char *bad_label = "!!?GARBLED ITEM?!!"; + /* `:label LABEL-STRING'. */ + set_prop (TOOL_BAR_ITEM_LABEL, + STRINGP (value) ? value : build_string (bad_label)); + have_label = 1; + } + else if (EQ (ikey, QCfilter)) + /* ':filter FORM'. */ + filter = value; + else if (EQ (ikey, QCbutton) && CONSP (value)) + { + /* `:button (TYPE . SELECTED)'. */ + Lisp_Object type, selected; + + type = XCAR (value); + selected = XCDR (value); + if (EQ (type, QCtoggle) || EQ (type, QCradio)) + { + set_prop (TOOL_BAR_ITEM_SELECTED_P, selected); + set_prop (TOOL_BAR_ITEM_TYPE, type); + } + } + else if (EQ (ikey, QCimage) + && (CONSP (value) + || (VECTORP (value) && ASIZE (value) == 4))) + /* Value is either a single image specification or a vector + of 4 such specifications for the different button states. */ + set_prop (TOOL_BAR_ITEM_IMAGES, value); + else if (EQ (ikey, QCrtl)) + /* ':rtl STRING' */ + set_prop (TOOL_BAR_ITEM_RTL_IMAGE, value); + } + + + if (!have_label) + { + /* Try to make one from caption and key. */ + Lisp_Object tkey = PROP (TOOL_BAR_ITEM_KEY); + Lisp_Object tcapt = PROP (TOOL_BAR_ITEM_CAPTION); + const char *label = SYMBOLP (tkey) ? SSDATA (SYMBOL_NAME (tkey)) : ""; + const char *capt = STRINGP (tcapt) ? SSDATA (tcapt) : ""; + ptrdiff_t max_lbl = + 2 * max (0, min (tool_bar_max_label_size, STRING_BYTES_BOUND / 2)); + char *buf = xmalloc (max_lbl + 1); + Lisp_Object new_lbl; + ptrdiff_t caption_len = strlen (capt); + + if (caption_len <= max_lbl && capt[0] != '\0') + { + strcpy (buf, capt); + while (caption_len > 0 && buf[caption_len - 1] == '.') + caption_len--; + buf[caption_len] = '\0'; + label = capt = buf; + } + + if (strlen (label) <= max_lbl && label[0] != '\0') + { + ptrdiff_t j; + if (label != buf) + strcpy (buf, label); + + for (j = 0; buf[j] != '\0'; ++j) + if (buf[j] == '-') + buf[j] = ' '; + label = buf; + } + else + label = ""; + + new_lbl = Fupcase_initials (build_string (label)); + if (SCHARS (new_lbl) <= tool_bar_max_label_size) + set_prop (TOOL_BAR_ITEM_LABEL, new_lbl); + else + set_prop (TOOL_BAR_ITEM_LABEL, empty_unibyte_string); + xfree (buf); + } + + /* If got a filter apply it on binding. */ + if (!NILP (filter)) + set_prop (TOOL_BAR_ITEM_BINDING, + (menu_item_eval_property + (list2 (filter, + list2 (Qquote, + PROP (TOOL_BAR_ITEM_BINDING)))))); + + /* See if the binding is a keymap. Give up if it is. */ + if (CONSP (get_keymap (PROP (TOOL_BAR_ITEM_BINDING), 0, 1))) + return 0; + + /* Enable or disable selection of item. */ + if (!EQ (PROP (TOOL_BAR_ITEM_ENABLED_P), Qt)) + set_prop (TOOL_BAR_ITEM_ENABLED_P, + menu_item_eval_property (PROP (TOOL_BAR_ITEM_ENABLED_P))); + + /* Handle radio buttons or toggle boxes. */ + if (!NILP (PROP (TOOL_BAR_ITEM_SELECTED_P))) + set_prop (TOOL_BAR_ITEM_SELECTED_P, + menu_item_eval_property (PROP (TOOL_BAR_ITEM_SELECTED_P))); + + return 1; + +#undef PROP +} + + +/* Initialize tool_bar_items_vector. REUSE, if non-nil, is a vector + that can be reused. */ + +static void +init_tool_bar_items (Lisp_Object reuse) +{ + if (VECTORP (reuse)) + tool_bar_items_vector = reuse; + else + tool_bar_items_vector = Fmake_vector (make_number (64), Qnil); + ntool_bar_items = 0; +} + + +/* Append parsed tool bar item properties from + tool_bar_item_properties */ + +static void +append_tool_bar_item (void) +{ + ptrdiff_t incr + = (ntool_bar_items + - (ASIZE (tool_bar_items_vector) - TOOL_BAR_ITEM_NSLOTS)); + + /* Enlarge tool_bar_items_vector if necessary. */ + if (incr > 0) + tool_bar_items_vector = larger_vector (tool_bar_items_vector, incr, -1); + + /* Append entries from tool_bar_item_properties to the end of + tool_bar_items_vector. */ + vcopy (tool_bar_items_vector, ntool_bar_items, + XVECTOR (tool_bar_item_properties)->contents, TOOL_BAR_ITEM_NSLOTS); + ntool_bar_items += TOOL_BAR_ITEM_NSLOTS; +} + + + + + +/* Read a character using menus based on the keymap MAP. + Return nil if there are no menus in the maps. + Return t if we displayed a menu but the user rejected it. + + PREV_EVENT is the previous input event, or nil if we are reading + the first event of a key sequence. + + If USED_MOUSE_MENU is non-null, set *USED_MOUSE_MENU to true + if we used a mouse menu to read the input, or false otherwise. If + USED_MOUSE_MENU is null, don't dereference it. + + The prompting is done based on the prompt-string of the map + and the strings associated with various map elements. + + This can be done with X menus or with menus put in the minibuf. + These are done in different ways, depending on how the input will be read. + Menus using X are done after auto-saving in read-char, getting the input + event from Fx_popup_menu; menus using the minibuf use read_char recursively + and do auto-saving in the inner call of read_char. */ + +static Lisp_Object +read_char_x_menu_prompt (Lisp_Object map, + Lisp_Object prev_event, bool *used_mouse_menu) +{ + if (used_mouse_menu) + *used_mouse_menu = 0; + + /* Use local over global Menu maps. */ + + if (! menu_prompting) + return Qnil; + + /* If we got to this point via a mouse click, + use a real menu for mouse selection. */ + if (EVENT_HAS_PARAMETERS (prev_event) + && !EQ (XCAR (prev_event), Qmenu_bar) + && !EQ (XCAR (prev_event), Qtool_bar)) + { + /* Display the menu and get the selection. */ + Lisp_Object value; + + value = Fx_popup_menu (prev_event, get_keymap (map, 0, 1)); + if (CONSP (value)) + { + Lisp_Object tem; + + record_menu_key (XCAR (value)); + + /* If we got multiple events, unread all but + the first. + There is no way to prevent those unread events + from showing up later in last_nonmenu_event. + So turn symbol and integer events into lists, + to indicate that they came from a mouse menu, + so that when present in last_nonmenu_event + they won't confuse things. */ + for (tem = XCDR (value); CONSP (tem); tem = XCDR (tem)) + { + record_menu_key (XCAR (tem)); + if (SYMBOLP (XCAR (tem)) + || INTEGERP (XCAR (tem))) + XSETCAR (tem, Fcons (XCAR (tem), Qdisabled)); + } + + /* If we got more than one event, put all but the first + onto this list to be read later. + Return just the first event now. */ + Vunread_command_events + = nconc2 (XCDR (value), Vunread_command_events); + value = XCAR (value); + } + else if (NILP (value)) + value = Qt; + if (used_mouse_menu) + *used_mouse_menu = 1; + return value; + } + return Qnil ; +} + +static Lisp_Object +read_char_minibuf_menu_prompt (int commandflag, + Lisp_Object map) +{ + Lisp_Object name; + ptrdiff_t nlength; + /* FIXME: Use the minibuffer's frame width. */ + ptrdiff_t width = FRAME_COLS (SELECTED_FRAME ()) - 4; + ptrdiff_t idx = -1; + bool nobindings = 1; + Lisp_Object rest, vector; + Lisp_Object prompt_strings = Qnil; + + vector = Qnil; + + if (! menu_prompting) + return Qnil; + + map = get_keymap (map, 0, 1); + name = Fkeymap_prompt (map); + + /* If we don't have any menus, just read a character normally. */ + if (!STRINGP (name)) + return Qnil; + +#define PUSH_C_STR(str, listvar) \ + listvar = Fcons (build_unibyte_string (str), listvar) + + /* Prompt string always starts with map's prompt, and a space. */ + prompt_strings = Fcons (name, prompt_strings); + PUSH_C_STR (": ", prompt_strings); + nlength = SCHARS (name) + 2; + + rest = map; + + /* Present the documented bindings, a line at a time. */ + while (1) + { + bool notfirst = 0; + Lisp_Object menu_strings = prompt_strings; + ptrdiff_t i = nlength; + Lisp_Object obj; + Lisp_Object orig_defn_macro; + + /* Loop over elements of map. */ + while (i < width) + { + Lisp_Object elt; + + /* FIXME: Use map_keymap to handle new keymap formats. */ + + /* At end of map, wrap around if just starting, + or end this line if already have something on it. */ + if (NILP (rest)) + { + if (notfirst || nobindings) + break; + else + rest = map; + } + + /* Look at the next element of the map. */ + if (idx >= 0) + elt = AREF (vector, idx); + else + elt = Fcar_safe (rest); + + if (idx < 0 && VECTORP (elt)) + { + /* If we found a dense table in the keymap, + advanced past it, but start scanning its contents. */ + rest = Fcdr_safe (rest); + vector = elt; + idx = 0; + } + else + { + /* An ordinary element. */ + Lisp_Object event, tem; + + if (idx < 0) + { + event = Fcar_safe (elt); /* alist */ + elt = Fcdr_safe (elt); + } + else + { + XSETINT (event, idx); /* vector */ + } + + /* Ignore the element if it has no prompt string. */ + if (INTEGERP (event) && parse_menu_item (elt, -1)) + { + /* True if the char to type matches the string. */ + bool char_matches; + Lisp_Object upcased_event, downcased_event; + Lisp_Object desc = Qnil; + Lisp_Object s + = AREF (item_properties, ITEM_PROPERTY_NAME); + + upcased_event = Fupcase (event); + downcased_event = Fdowncase (event); + char_matches = (XINT (upcased_event) == SREF (s, 0) + || XINT (downcased_event) == SREF (s, 0)); + if (! char_matches) + desc = Fsingle_key_description (event, Qnil); + +#if 0 /* It is redundant to list the equivalent key bindings because + the prefix is what the user has already typed. */ + tem + = XVECTOR (item_properties)->contents[ITEM_PROPERTY_KEYEQ]; + if (!NILP (tem)) + /* Insert equivalent keybinding. */ + s = concat2 (s, tem); +#endif + tem + = AREF (item_properties, ITEM_PROPERTY_TYPE); + if (EQ (tem, QCradio) || EQ (tem, QCtoggle)) + { + /* Insert button prefix. */ + Lisp_Object selected + = AREF (item_properties, ITEM_PROPERTY_SELECTED); + AUTO_STRING (radio_yes, "(*) "); + AUTO_STRING (radio_no , "( ) "); + AUTO_STRING (check_yes, "[X] "); + AUTO_STRING (check_no , "[ ] "); + if (EQ (tem, QCradio)) + tem = NILP (selected) ? radio_yes : radio_no; + else + tem = NILP (selected) ? check_yes : check_no; + s = concat2 (tem, s); + } + + + /* If we have room for the prompt string, add it to this line. + If this is the first on the line, always add it. */ + if ((SCHARS (s) + i + 2 + + (char_matches ? 0 : SCHARS (desc) + 3)) + < width + || !notfirst) + { + ptrdiff_t thiswidth; + + /* Punctuate between strings. */ + if (notfirst) + { + PUSH_C_STR (", ", menu_strings); + i += 2; + } + notfirst = 1; + nobindings = 0; + + /* If the char to type doesn't match the string's + first char, explicitly show what char to type. */ + if (! char_matches) + { + /* Add as much of string as fits. */ + thiswidth = min (SCHARS (desc), width - i); + menu_strings + = Fcons (Fsubstring (desc, make_number (0), + make_number (thiswidth)), + menu_strings); + i += thiswidth; + PUSH_C_STR (" = ", menu_strings); + i += 3; + } + + /* Add as much of string as fits. */ + thiswidth = min (SCHARS (s), width - i); + menu_strings + = Fcons (Fsubstring (s, make_number (0), + make_number (thiswidth)), + menu_strings); + i += thiswidth; + } + else + { + /* If this element does not fit, end the line now, + and save the element for the next line. */ + PUSH_C_STR ("...", menu_strings); + break; + } + } + + /* Move past this element. */ + if (idx >= 0 && idx + 1 >= ASIZE (vector)) + /* Handle reaching end of dense table. */ + idx = -1; + if (idx >= 0) + idx++; + else + rest = Fcdr_safe (rest); + } + } + + /* Prompt with that and read response. */ + message3_nolog (apply1 (intern ("concat"), Fnreverse (menu_strings))); + + /* Make believe it's not a keyboard macro in case the help char + is pressed. Help characters are not recorded because menu prompting + is not used on replay. */ + orig_defn_macro = KVAR (current_kboard, defining_kbd_macro); + kset_defining_kbd_macro (current_kboard, Qnil); + do + obj = read_char (commandflag, Qnil, Qt, 0, NULL); + while (BUFFERP (obj)); + kset_defining_kbd_macro (current_kboard, orig_defn_macro); + + if (!INTEGERP (obj) || XINT (obj) == -2 + || (! EQ (obj, menu_prompt_more_char) + && (!INTEGERP (menu_prompt_more_char) + || ! EQ (obj, make_number (Ctl (XINT (menu_prompt_more_char))))))) + { + if (!NILP (KVAR (current_kboard, defining_kbd_macro))) + store_kbd_macro_char (obj); + return obj; + } + /* Help char - go round again. */ + } +} + +/* Reading key sequences. */ + +static Lisp_Object +follow_key (Lisp_Object keymap, Lisp_Object key) +{ + return access_keymap (get_keymap (keymap, 0, 1), + key, 1, 0, 1); +} + +static Lisp_Object +active_maps (Lisp_Object first_event) +{ + Lisp_Object position + = CONSP (first_event) ? CAR_SAFE (XCDR (first_event)) : Qnil; + return Fcons (Qkeymap, Fcurrent_active_maps (Qt, position)); +} + +/* Structure used to keep track of partial application of key remapping + such as Vfunction_key_map and Vkey_translation_map. */ +typedef struct keyremap +{ + /* This is the map originally specified for this use. */ + Lisp_Object parent; + /* This is a submap reached by looking up, in PARENT, + the events from START to END. */ + Lisp_Object map; + /* Positions [START, END) in the key sequence buffer + are the key that we have scanned so far. + Those events are the ones that we will replace + if PARENT maps them into a key sequence. */ + int start, end; +} keyremap; + +/* Lookup KEY in MAP. + MAP is a keymap mapping keys to key vectors or functions. + If the mapping is a function and DO_FUNCALL is true, + the function is called with PROMPT as parameter and its return + value is used as the return value of this function (after checking + that it is indeed a vector). */ + +static Lisp_Object +access_keymap_keyremap (Lisp_Object map, Lisp_Object key, Lisp_Object prompt, + bool do_funcall) +{ + Lisp_Object next; + + next = access_keymap (map, key, 1, 0, 1); + + /* Handle a symbol whose function definition is a keymap + or an array. */ + if (SYMBOLP (next) && !NILP (Ffboundp (next)) + && (ARRAYP (XSYMBOL (next)->function) + || KEYMAPP (XSYMBOL (next)->function))) + next = Fautoload_do_load (XSYMBOL (next)->function, next, Qnil); + + /* If the keymap gives a function, not an + array, then call the function with one arg and use + its value instead. */ + if (do_funcall && FUNCTIONP (next)) + { + Lisp_Object tem; + tem = next; + + next = call1 (next, prompt); + /* If the function returned something invalid, + barf--don't ignore it. + (To ignore it safely, we would need to gcpro a bunch of + other variables.) */ + if (! (NILP (next) || VECTORP (next) || STRINGP (next))) + error ("Function %s returns invalid key sequence", + SSDATA (SYMBOL_NAME (tem))); + } + return next; +} + +/* Do one step of the key remapping used for function-key-map and + key-translation-map: + KEYBUF is the buffer holding the input events. + BUFSIZE is its maximum size. + FKEY is a pointer to the keyremap structure to use. + INPUT is the index of the last element in KEYBUF. + DOIT if true says that the remapping can actually take place. + DIFF is used to return the number of keys added/removed by the remapping. + PARENT is the root of the keymap. + PROMPT is the prompt to use if the remapping happens through a function. + Return true if the remapping actually took place. */ + +static bool +keyremap_step (Lisp_Object *keybuf, int bufsize, volatile keyremap *fkey, + int input, bool doit, int *diff, Lisp_Object prompt) +{ + Lisp_Object next, key; + + key = keybuf[fkey->end++]; + + if (KEYMAPP (fkey->parent)) + next = access_keymap_keyremap (fkey->map, key, prompt, doit); + else + next = Qnil; + + /* If keybuf[fkey->start..fkey->end] is bound in the + map and we're in a position to do the key remapping, replace it with + the binding and restart with fkey->start at the end. */ + if ((VECTORP (next) || STRINGP (next)) && doit) + { + int len = XFASTINT (Flength (next)); + int i; + + *diff = len - (fkey->end - fkey->start); + + if (bufsize - input <= *diff) + error ("Key sequence too long"); + + /* Shift the keys that follow fkey->end. */ + if (*diff < 0) + for (i = fkey->end; i < input; i++) + keybuf[i + *diff] = keybuf[i]; + else if (*diff > 0) + for (i = input - 1; i >= fkey->end; i--) + keybuf[i + *diff] = keybuf[i]; + /* Overwrite the old keys with the new ones. */ + for (i = 0; i < len; i++) + keybuf[fkey->start + i] + = Faref (next, make_number (i)); + + fkey->start = fkey->end += *diff; + fkey->map = fkey->parent; + + return 1; + } + + fkey->map = get_keymap (next, 0, 1); + + /* If we no longer have a bound suffix, try a new position for + fkey->start. */ + if (!CONSP (fkey->map)) + { + fkey->end = ++fkey->start; + fkey->map = fkey->parent; + } + return 0; +} + +static bool +test_undefined (Lisp_Object binding) +{ + return (NILP (binding) + || EQ (binding, Qundefined) + || (SYMBOLP (binding) + && EQ (Fcommand_remapping (binding, Qnil, Qnil), Qundefined))); +} + +/* Read a sequence of keys that ends with a non prefix character, + storing it in KEYBUF, a buffer of size BUFSIZE. + Prompt with PROMPT. + Return the length of the key sequence stored. + Return -1 if the user rejected a command menu. + + Echo starting immediately unless `prompt' is 0. + + If PREVENT_REDISPLAY is non-zero, avoid redisplay by calling + read_char with a suitable COMMANDFLAG argument. + + Where a key sequence ends depends on the currently active keymaps. + These include any minor mode keymaps active in the current buffer, + the current buffer's local map, and the global map. + + If a key sequence has no other bindings, we check Vfunction_key_map + to see if some trailing subsequence might be the beginning of a + function key's sequence. If so, we try to read the whole function + key, and substitute its symbolic name into the key sequence. + + We ignore unbound `down-' mouse clicks. We turn unbound `drag-' and + `double-' events into similar click events, if that would make them + bound. We try to turn `triple-' events first into `double-' events, + then into clicks. + + If we get a mouse click in a mode line, vertical divider, or other + non-text area, we treat the click as if it were prefixed by the + symbol denoting that area - `mode-line', `vertical-line', or + whatever. + + If the sequence starts with a mouse click, we read the key sequence + with respect to the buffer clicked on, not the current buffer. + + If the user switches frames in the midst of a key sequence, we put + off the switch-frame event until later; the next call to + read_char will return it. + + If FIX_CURRENT_BUFFER, we restore current_buffer + from the selected window's buffer. */ + +static int +read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt, + bool dont_downcase_last, bool can_return_switch_frame, + bool fix_current_buffer, bool prevent_redisplay) +{ + ptrdiff_t count = SPECPDL_INDEX (); + + /* How many keys there are in the current key sequence. */ + int t; + + /* The length of the echo buffer when we started reading, and + the length of this_command_keys when we started reading. */ + ptrdiff_t echo_start IF_LINT (= 0); + ptrdiff_t keys_start; + + Lisp_Object current_binding = Qnil; + Lisp_Object first_event = Qnil; + + /* Index of the first key that has no binding. + It is useless to try fkey.start larger than that. */ + int first_unbound; + + /* If t < mock_input, then KEYBUF[t] should be read as the next + input key. + + We use this to recover after recognizing a function key. Once we + realize that a suffix of the current key sequence is actually a + function key's escape sequence, we replace the suffix with the + function key's binding from Vfunction_key_map. Now keybuf + contains a new and different key sequence, so the echo area, + this_command_keys, and the submaps and defs arrays are wrong. In + this situation, we set mock_input to t, set t to 0, and jump to + restart_sequence; the loop will read keys from keybuf up until + mock_input, thus rebuilding the state; and then it will resume + reading characters from the keyboard. */ + int mock_input = 0; + + /* If the sequence is unbound in submaps[], then + keybuf[fkey.start..fkey.end-1] is a prefix in Vfunction_key_map, + and fkey.map is its binding. + + These might be > t, indicating that all function key scanning + should hold off until t reaches them. We do this when we've just + recognized a function key, to avoid searching for the function + key's again in Vfunction_key_map. */ + keyremap fkey; + + /* Likewise, for key_translation_map and input-decode-map. */ + keyremap keytran, indec; + + /* True if we are trying to map a key by changing an upper-case + letter to lower case, or a shifted function key to an unshifted + one. */ + bool shift_translated = 0; + + /* If we receive a `switch-frame' or `select-window' event in the middle of + a key sequence, we put it off for later. + While we're reading, we keep the event here. */ + Lisp_Object delayed_switch_frame; + + Lisp_Object original_uppercase IF_LINT (= Qnil); + int original_uppercase_position = -1; + + /* Gets around Microsoft compiler limitations. */ + bool dummyflag = 0; + + struct buffer *starting_buffer; + + /* List of events for which a fake prefix key has been generated. */ + Lisp_Object fake_prefixed_keys = Qnil; + + struct gcpro gcpro1; + + GCPRO1 (fake_prefixed_keys); + raw_keybuf_count = 0; + + last_nonmenu_event = Qnil; + + delayed_switch_frame = Qnil; + + if (INTERACTIVE) + { + if (!NILP (prompt)) + { + /* Install the string PROMPT as the beginning of the string + of echoing, so that it serves as a prompt for the next + character. */ + kset_echo_string (current_kboard, prompt); + current_kboard->echo_after_prompt = SCHARS (prompt); + echo_now (); + } + else if (cursor_in_echo_area + && echo_keystrokes_p ()) + /* This doesn't put in a dash if the echo buffer is empty, so + you don't always see a dash hanging out in the minibuffer. */ + echo_dash (); + } + + /* Record the initial state of the echo area and this_command_keys; + we will need to restore them if we replay a key sequence. */ + if (INTERACTIVE) + echo_start = echo_length (); + keys_start = this_command_key_count; + this_single_command_key_start = keys_start; + + /* We jump here when we need to reinitialize fkey and keytran; this + happens if we switch keyboards between rescans. */ + replay_entire_sequence: + + indec.map = indec.parent = KVAR (current_kboard, Vinput_decode_map); + fkey.map = fkey.parent = KVAR (current_kboard, Vlocal_function_key_map); + keytran.map = keytran.parent = Vkey_translation_map; + indec.start = indec.end = 0; + fkey.start = fkey.end = 0; + keytran.start = keytran.end = 0; + + /* We jump here when the key sequence has been thoroughly changed, and + we need to rescan it starting from the beginning. When we jump here, + keybuf[0..mock_input] holds the sequence we should reread. */ + replay_sequence: + + starting_buffer = current_buffer; + first_unbound = bufsize + 1; + + /* Build our list of keymaps. + If we recognize a function key and replace its escape sequence in + keybuf with its symbol, or if the sequence starts with a mouse + click and we need to switch buffers, we jump back here to rebuild + the initial keymaps from the current buffer. */ + current_binding = active_maps (first_event); + + /* Start from the beginning in keybuf. */ + t = 0; + + /* These are no-ops the first time through, but if we restart, they + revert the echo area and this_command_keys to their original state. */ + this_command_key_count = keys_start; + if (INTERACTIVE && t < mock_input) + echo_truncate (echo_start); + + /* If the best binding for the current key sequence is a keymap, or + we may be looking at a function key's escape sequence, keep on + reading. */ + while (!NILP (current_binding) + /* Keep reading as long as there's a prefix binding. */ + ? KEYMAPP (current_binding) + /* Don't return in the middle of a possible function key sequence, + if the only bindings we found were via case conversion. + Thus, if ESC O a has a function-key-map translation + and ESC o has a binding, don't return after ESC O, + so that we can translate ESC O plus the next character. */ + : (/* indec.start < t || fkey.start < t || */ keytran.start < t)) + { + Lisp_Object key; + bool used_mouse_menu = 0; + + /* Where the last real key started. If we need to throw away a + key that has expanded into more than one element of keybuf + (say, a mouse click on the mode line which is being treated + as [mode-line (mouse-...)], then we backtrack to this point + of keybuf. */ + int last_real_key_start; + + /* These variables are analogous to echo_start and keys_start; + while those allow us to restart the entire key sequence, + echo_local_start and keys_local_start allow us to throw away + just one key. */ + ptrdiff_t echo_local_start IF_LINT (= 0); + int keys_local_start; + Lisp_Object new_binding; + + eassert (indec.end == t || (indec.end > t && indec.end <= mock_input)); + eassert (indec.start <= indec.end); + eassert (fkey.start <= fkey.end); + eassert (keytran.start <= keytran.end); + /* key-translation-map is applied *after* function-key-map + which is itself applied *after* input-decode-map. */ + eassert (fkey.end <= indec.start); + eassert (keytran.end <= fkey.start); + + if (/* first_unbound < indec.start && first_unbound < fkey.start && */ + first_unbound < keytran.start) + { /* The prefix upto first_unbound has no binding and has + no translation left to do either, so we know it's unbound. + If we don't stop now, we risk staying here indefinitely + (if the user keeps entering fkey or keytran prefixes + like C-c ESC ESC ESC ESC ...) */ + int i; + for (i = first_unbound + 1; i < t; i++) + keybuf[i - first_unbound - 1] = keybuf[i]; + mock_input = t - first_unbound - 1; + indec.end = indec.start -= first_unbound + 1; + indec.map = indec.parent; + fkey.end = fkey.start -= first_unbound + 1; + fkey.map = fkey.parent; + keytran.end = keytran.start -= first_unbound + 1; + keytran.map = keytran.parent; + goto replay_sequence; + } + + if (t >= bufsize) + error ("Key sequence too long"); + + if (INTERACTIVE) + echo_local_start = echo_length (); + keys_local_start = this_command_key_count; + + replay_key: + /* These are no-ops, unless we throw away a keystroke below and + jumped back up to replay_key; in that case, these restore the + variables to their original state, allowing us to replay the + loop. */ + if (INTERACTIVE && t < mock_input) + echo_truncate (echo_local_start); + this_command_key_count = keys_local_start; + + /* By default, assume each event is "real". */ + last_real_key_start = t; + + /* Does mock_input indicate that we are re-reading a key sequence? */ + if (t < mock_input) + { + key = keybuf[t]; + add_command_key (key); + if (echo_keystrokes_p () + && current_kboard->immediate_echo) + { + echo_add_key (key); + echo_dash (); + } + } + + /* If not, we should actually read a character. */ + else + { + { + KBOARD *interrupted_kboard = current_kboard; + struct frame *interrupted_frame = SELECTED_FRAME (); + /* Calling read_char with COMMANDFLAG = -2 avoids + redisplay in read_char and its subroutines. */ + key = read_char (prevent_redisplay ? -2 : NILP (prompt), + current_binding, last_nonmenu_event, + &used_mouse_menu, NULL); + if ((INTEGERP (key) && XINT (key) == -2) /* wrong_kboard_jmpbuf */ + /* When switching to a new tty (with a new keyboard), + read_char returns the new buffer, rather than -2 + (Bug#5095). This is because `terminal-init-xterm' + calls read-char, which eats the wrong_kboard_jmpbuf + return. Any better way to fix this? -- cyd */ + || (interrupted_kboard != current_kboard)) + { + bool found = 0; + struct kboard *k; + + for (k = all_kboards; k; k = k->next_kboard) + if (k == interrupted_kboard) + found = 1; + + if (!found) + { + /* Don't touch interrupted_kboard when it's been + deleted. */ + delayed_switch_frame = Qnil; + goto replay_entire_sequence; + } + + if (!NILP (delayed_switch_frame)) + { + kset_kbd_queue + (interrupted_kboard, + Fcons (delayed_switch_frame, + KVAR (interrupted_kboard, kbd_queue))); + delayed_switch_frame = Qnil; + } + + while (t > 0) + kset_kbd_queue + (interrupted_kboard, + Fcons (keybuf[--t], KVAR (interrupted_kboard, kbd_queue))); + + /* If the side queue is non-empty, ensure it begins with a + switch-frame, so we'll replay it in the right context. */ + if (CONSP (KVAR (interrupted_kboard, kbd_queue)) + && (key = XCAR (KVAR (interrupted_kboard, kbd_queue)), + !(EVENT_HAS_PARAMETERS (key) + && EQ (EVENT_HEAD_KIND (EVENT_HEAD (key)), + Qswitch_frame)))) + { + Lisp_Object frame; + XSETFRAME (frame, interrupted_frame); + kset_kbd_queue + (interrupted_kboard, + Fcons (make_lispy_switch_frame (frame), + KVAR (interrupted_kboard, kbd_queue))); + } + mock_input = 0; + goto replay_entire_sequence; + } + } + + /* read_char returns t when it shows a menu and the user rejects it. + Just return -1. */ + if (EQ (key, Qt)) + { + unbind_to (count, Qnil); + UNGCPRO; + return -1; + } + + /* read_char returns -1 at the end of a macro. + Emacs 18 handles this by returning immediately with a + zero, so that's what we'll do. */ + if (INTEGERP (key) && XINT (key) == -1) + { + t = 0; + /* The Microsoft C compiler can't handle the goto that + would go here. */ + dummyflag = 1; + break; + } + + /* If the current buffer has been changed from under us, the + keymap may have changed, so replay the sequence. */ + if (BUFFERP (key)) + { + timer_resume_idle (); + + mock_input = t; + /* Reset the current buffer from the selected window + in case something changed the former and not the latter. + This is to be more consistent with the behavior + of the command_loop_1. */ + if (fix_current_buffer) + { + if (! FRAME_LIVE_P (XFRAME (selected_frame))) + Fkill_emacs (Qnil); + if (XBUFFER (XWINDOW (selected_window)->contents) + != current_buffer) + Fset_buffer (XWINDOW (selected_window)->contents); + } + + goto replay_sequence; + } + + /* If we have a quit that was typed in another frame, and + quit_throw_to_read_char switched buffers, + replay to get the right keymap. */ + if (INTEGERP (key) + && XINT (key) == quit_char + && current_buffer != starting_buffer) + { + GROW_RAW_KEYBUF; + ASET (raw_keybuf, raw_keybuf_count, key); + raw_keybuf_count++; + keybuf[t++] = key; + mock_input = t; + Vquit_flag = Qnil; + goto replay_sequence; + } + + Vquit_flag = Qnil; + + if (EVENT_HAS_PARAMETERS (key) + /* Either a `switch-frame' or a `select-window' event. */ + && EQ (EVENT_HEAD_KIND (EVENT_HEAD (key)), Qswitch_frame)) + { + /* If we're at the beginning of a key sequence, and the caller + says it's okay, go ahead and return this event. If we're + in the midst of a key sequence, delay it until the end. */ + if (t > 0 || !can_return_switch_frame) + { + delayed_switch_frame = key; + goto replay_key; + } + } + + if (NILP (first_event)) + { + first_event = key; + /* Even if first_event does not specify a particular + window/position, it's important to recompute the maps here + since a long time might have passed since we entered + read_key_sequence, and a timer (or process-filter or + special-event-map, ...) might have switched the current buffer + or the selected window from under us in the mean time. */ + if (fix_current_buffer + && (XBUFFER (XWINDOW (selected_window)->contents) + != current_buffer)) + Fset_buffer (XWINDOW (selected_window)->contents); + current_binding = active_maps (first_event); + } + + GROW_RAW_KEYBUF; + ASET (raw_keybuf, raw_keybuf_count, key); + raw_keybuf_count++; + } + + /* Clicks in non-text areas get prefixed by the symbol + in their CHAR-ADDRESS field. For example, a click on + the mode line is prefixed by the symbol `mode-line'. + + Furthermore, key sequences beginning with mouse clicks + are read using the keymaps of the buffer clicked on, not + the current buffer. So we may have to switch the buffer + here. + + When we turn one event into two events, we must make sure + that neither of the two looks like the original--so that, + if we replay the events, they won't be expanded again. + If not for this, such reexpansion could happen either here + or when user programs play with this-command-keys. */ + if (EVENT_HAS_PARAMETERS (key)) + { + Lisp_Object kind = EVENT_HEAD_KIND (EVENT_HEAD (key)); + if (EQ (kind, Qmouse_click)) + { + Lisp_Object window = POSN_WINDOW (EVENT_START (key)); + Lisp_Object posn = POSN_POSN (EVENT_START (key)); + + if (CONSP (posn) + || (!NILP (fake_prefixed_keys) + && !NILP (Fmemq (key, fake_prefixed_keys)))) + { + /* We're looking a second time at an event for which + we generated a fake prefix key. Set + last_real_key_start appropriately. */ + if (t > 0) + last_real_key_start = t - 1; + } + + if (last_real_key_start == 0) + { + /* Key sequences beginning with mouse clicks are + read using the keymaps in the buffer clicked on, + not the current buffer. If we're at the + beginning of a key sequence, switch buffers. */ + if (WINDOWP (window) + && BUFFERP (XWINDOW (window)->contents) + && XBUFFER (XWINDOW (window)->contents) != current_buffer) + { + ASET (raw_keybuf, raw_keybuf_count, key); + raw_keybuf_count++; + keybuf[t] = key; + mock_input = t + 1; + + /* Arrange to go back to the original buffer once we're + done reading the key sequence. Note that we can't + use save_excursion_{save,restore} here, because they + save point as well as the current buffer; we don't + want to save point, because redisplay may change it, + to accommodate a Fset_window_start or something. We + don't want to do this at the top of the function, + because we may get input from a subprocess which + wants to change the selected window and stuff (say, + emacsclient). */ + record_unwind_current_buffer (); + + if (! FRAME_LIVE_P (XFRAME (selected_frame))) + Fkill_emacs (Qnil); + set_buffer_internal (XBUFFER (XWINDOW (window)->contents)); + goto replay_sequence; + } + } + + /* Expand mode-line and scroll-bar events into two events: + use posn as a fake prefix key. */ + if (SYMBOLP (posn) + && (NILP (fake_prefixed_keys) + || NILP (Fmemq (key, fake_prefixed_keys)))) + { + if (bufsize - t <= 1) + error ("Key sequence too long"); + + keybuf[t] = posn; + keybuf[t + 1] = key; + mock_input = t + 2; + + /* Record that a fake prefix key has been generated + for KEY. Don't modify the event; this would + prevent proper action when the event is pushed + back into unread-command-events. */ + fake_prefixed_keys = Fcons (key, fake_prefixed_keys); + goto replay_key; + } + } + else if (CONSP (XCDR (key)) + && CONSP (EVENT_START (key)) + && CONSP (XCDR (EVENT_START (key)))) + { + Lisp_Object posn; + + posn = POSN_POSN (EVENT_START (key)); + /* Handle menu-bar events: + insert the dummy prefix event `menu-bar'. */ + if (EQ (posn, Qmenu_bar) || EQ (posn, Qtool_bar)) + { + if (bufsize - t <= 1) + error ("Key sequence too long"); + keybuf[t] = posn; + keybuf[t + 1] = key; + + /* Zap the position in key, so we know that we've + expanded it, and don't try to do so again. */ + POSN_SET_POSN (EVENT_START (key), list1 (posn)); + + mock_input = t + 2; + goto replay_sequence; + } + else if (CONSP (posn)) + { + /* We're looking at the second event of a + sequence which we expanded before. Set + last_real_key_start appropriately. */ + if (last_real_key_start == t && t > 0) + last_real_key_start = t - 1; + } + } + } + + /* We have finally decided that KEY is something we might want + to look up. */ + new_binding = follow_key (current_binding, key); + + /* If KEY wasn't bound, we'll try some fallbacks. */ + if (!NILP (new_binding)) + /* This is needed for the following scenario: + event 0: a down-event that gets dropped by calling replay_key. + event 1: some normal prefix like C-h. + After event 0, first_unbound is 0, after event 1 indec.start, + fkey.start, and keytran.start are all 1, so when we see that + C-h is bound, we need to update first_unbound. */ + first_unbound = max (t + 1, first_unbound); + else + { + Lisp_Object head; + + /* Remember the position to put an upper bound on indec.start. */ + first_unbound = min (t, first_unbound); + + head = EVENT_HEAD (key); + + if (SYMBOLP (head)) + { + Lisp_Object breakdown; + int modifiers; + + breakdown = parse_modifiers (head); + modifiers = XINT (XCAR (XCDR (breakdown))); + /* Attempt to reduce an unbound mouse event to a simpler + event that is bound: + Drags reduce to clicks. + Double-clicks reduce to clicks. + Triple-clicks reduce to double-clicks, then to clicks. + Down-clicks are eliminated. + Double-downs reduce to downs, then are eliminated. + Triple-downs reduce to double-downs, then to downs, + then are eliminated. */ + if (modifiers & (down_modifier | drag_modifier + | double_modifier | triple_modifier)) + { + while (modifiers & (down_modifier | drag_modifier + | double_modifier | triple_modifier)) + { + Lisp_Object new_head, new_click; + if (modifiers & triple_modifier) + modifiers ^= (double_modifier | triple_modifier); + else if (modifiers & double_modifier) + modifiers &= ~double_modifier; + else if (modifiers & drag_modifier) + modifiers &= ~drag_modifier; + else + { + /* Dispose of this `down' event by simply jumping + back to replay_key, to get another event. + + Note that if this event came from mock input, + then just jumping back to replay_key will just + hand it to us again. So we have to wipe out any + mock input. + + We could delete keybuf[t] and shift everything + after that to the left by one spot, but we'd also + have to fix up any variable that points into + keybuf, and shifting isn't really necessary + anyway. + + Adding prefixes for non-textual mouse clicks + creates two characters of mock input, and both + must be thrown away. If we're only looking at + the prefix now, we can just jump back to + replay_key. On the other hand, if we've already + processed the prefix, and now the actual click + itself is giving us trouble, then we've lost the + state of the keymaps we want to backtrack to, and + we need to replay the whole sequence to rebuild + it. + + Beyond that, only function key expansion could + create more than two keys, but that should never + generate mouse events, so it's okay to zero + mock_input in that case too. + + FIXME: The above paragraph seems just plain + wrong, if you consider things like + xterm-mouse-mode. -stef + + Isn't this just the most wonderful code ever? */ + + /* If mock_input > t + 1, the above simplification + will actually end up dropping keys on the floor. + This is probably OK for now, but even + if mock_input <= t + 1, we need to adjust indec, + fkey, and keytran. + Typical case [header-line down-mouse-N]: + mock_input = 2, t = 1, fkey.end = 1, + last_real_key_start = 0. */ + if (indec.end > last_real_key_start) + { + indec.end = indec.start + = min (last_real_key_start, indec.start); + indec.map = indec.parent; + if (fkey.end > last_real_key_start) + { + fkey.end = fkey.start + = min (last_real_key_start, fkey.start); + fkey.map = fkey.parent; + if (keytran.end > last_real_key_start) + { + keytran.end = keytran.start + = min (last_real_key_start, keytran.start); + keytran.map = keytran.parent; + } + } + } + if (t == last_real_key_start) + { + mock_input = 0; + goto replay_key; + } + else + { + mock_input = last_real_key_start; + goto replay_sequence; + } + } + + new_head + = apply_modifiers (modifiers, XCAR (breakdown)); + new_click = list2 (new_head, EVENT_START (key)); + + /* Look for a binding for this new key. */ + new_binding = follow_key (current_binding, new_click); + + /* If that click is bound, go for it. */ + if (!NILP (new_binding)) + { + current_binding = new_binding; + key = new_click; + break; + } + /* Otherwise, we'll leave key set to the drag event. */ + } + } + } + } + current_binding = new_binding; + + keybuf[t++] = key; + /* Normally, last_nonmenu_event gets the previous key we read. + But when a mouse popup menu is being used, + we don't update last_nonmenu_event; it continues to hold the mouse + event that preceded the first level of menu. */ + if (!used_mouse_menu) + last_nonmenu_event = key; + + /* Record what part of this_command_keys is the current key sequence. */ + this_single_command_key_start = this_command_key_count - t; + /* When 'input-method-function' called above causes events to be + put on 'unread-post-input-method-events', and as result + 'reread' is set to 'true', the value of 't' can become larger + than 'this_command_key_count', because 'add_command_key' is + not called to update 'this_command_key_count'. If this + happens, 'this_single_command_key_start' will become negative + above, and any call to 'this-single-command-keys' will return + a garbled vector. See bug #20223 for one such situation. + Here we force 'this_single_command_key_start' to never become + negative, to avoid that. */ + if (this_single_command_key_start < 0) + this_single_command_key_start = 0; + + /* Look for this sequence in input-decode-map. + Scan from indec.end until we find a bound suffix. */ + while (indec.end < t) + { + struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + bool done; + int diff; + + GCPRO4 (indec.map, fkey.map, keytran.map, delayed_switch_frame); + done = keyremap_step (keybuf, bufsize, &indec, max (t, mock_input), + 1, &diff, prompt); + UNGCPRO; + if (done) + { + mock_input = diff + max (t, mock_input); + goto replay_sequence; + } + } + + if (!KEYMAPP (current_binding) + && !test_undefined (current_binding) + && indec.start >= t) + /* There is a binding and it's not a prefix. + (and it doesn't have any input-decode-map translation pending). + There is thus no function-key in this sequence. + Moving fkey.start is important in this case to allow keytran.start + to go over the sequence before we return (since we keep the + invariant that keytran.end <= fkey.start). */ + { + if (fkey.start < t) + (fkey.start = fkey.end = t, fkey.map = fkey.parent); + } + else + /* If the sequence is unbound, see if we can hang a function key + off the end of it. */ + /* Continue scan from fkey.end until we find a bound suffix. */ + while (fkey.end < indec.start) + { + struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + bool done; + int diff; + + GCPRO4 (indec.map, fkey.map, keytran.map, delayed_switch_frame); + done = keyremap_step (keybuf, bufsize, &fkey, + max (t, mock_input), + /* If there's a binding (i.e. + first_binding >= nmaps) we don't want + to apply this function-key-mapping. */ + fkey.end + 1 == t + && (test_undefined (current_binding)), + &diff, prompt); + UNGCPRO; + if (done) + { + mock_input = diff + max (t, mock_input); + /* Adjust the input-decode-map counters. */ + indec.end += diff; + indec.start += diff; + + goto replay_sequence; + } + } + + /* Look for this sequence in key-translation-map. + Scan from keytran.end until we find a bound suffix. */ + while (keytran.end < fkey.start) + { + struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + bool done; + int diff; + + GCPRO4 (indec.map, fkey.map, keytran.map, delayed_switch_frame); + done = keyremap_step (keybuf, bufsize, &keytran, max (t, mock_input), + 1, &diff, prompt); + UNGCPRO; + if (done) + { + mock_input = diff + max (t, mock_input); + /* Adjust the function-key-map and input-decode-map counters. */ + indec.end += diff; + indec.start += diff; + fkey.end += diff; + fkey.start += diff; + + goto replay_sequence; + } + } + + /* If KEY is not defined in any of the keymaps, + and cannot be part of a function key or translation, + and is an upper case letter + use the corresponding lower-case letter instead. */ + if (NILP (current_binding) + && /* indec.start >= t && fkey.start >= t && */ keytran.start >= t + && INTEGERP (key) + && ((CHARACTERP (make_number (XINT (key) & ~CHAR_MODIFIER_MASK)) + && uppercasep (XINT (key) & ~CHAR_MODIFIER_MASK)) + || (XINT (key) & shift_modifier))) + { + Lisp_Object new_key; + + original_uppercase = key; + original_uppercase_position = t - 1; + + if (XINT (key) & shift_modifier) + XSETINT (new_key, XINT (key) & ~shift_modifier); + else + XSETINT (new_key, (downcase (XINT (key) & ~CHAR_MODIFIER_MASK) + | (XINT (key) & CHAR_MODIFIER_MASK))); + + /* We have to do this unconditionally, regardless of whether + the lower-case char is defined in the keymaps, because they + might get translated through function-key-map. */ + keybuf[t - 1] = new_key; + mock_input = max (t, mock_input); + shift_translated = 1; + + goto replay_sequence; + } + + if (NILP (current_binding) + && help_char_p (EVENT_HEAD (key)) && t > 1) + { + read_key_sequence_cmd = Vprefix_help_command; + /* The Microsoft C compiler can't handle the goto that + would go here. */ + dummyflag = 1; + break; + } + + /* If KEY is not defined in any of the keymaps, + and cannot be part of a function key or translation, + and is a shifted function key, + use the corresponding unshifted function key instead. */ + if (NILP (current_binding) + && /* indec.start >= t && fkey.start >= t && */ keytran.start >= t) + { + Lisp_Object breakdown = parse_modifiers (key); + int modifiers + = CONSP (breakdown) ? (XINT (XCAR (XCDR (breakdown)))) : 0; + + if (modifiers & shift_modifier + /* Treat uppercase keys as shifted. */ + || (INTEGERP (key) + && (KEY_TO_CHAR (key) + < XCHAR_TABLE (BVAR (current_buffer, downcase_table))->header.size) + && uppercasep (KEY_TO_CHAR (key)))) + { + Lisp_Object new_key + = (modifiers & shift_modifier + ? apply_modifiers (modifiers & ~shift_modifier, + XCAR (breakdown)) + : make_number (downcase (KEY_TO_CHAR (key)) | modifiers)); + + original_uppercase = key; + original_uppercase_position = t - 1; + + /* We have to do this unconditionally, regardless of whether + the lower-case char is defined in the keymaps, because they + might get translated through function-key-map. */ + keybuf[t - 1] = new_key; + mock_input = max (t, mock_input); + /* Reset fkey (and consequently keytran) to apply + function-key-map on the result, so that S-backspace is + correctly mapped to DEL (via backspace). OTOH, + input-decode-map doesn't need to go through it again. */ + fkey.start = fkey.end = 0; + keytran.start = keytran.end = 0; + shift_translated = 1; + + goto replay_sequence; + } + } + } + if (!dummyflag) + read_key_sequence_cmd = current_binding; + read_key_sequence_remapped + /* Remap command through active keymaps. + Do the remapping here, before the unbind_to so it uses the keymaps + of the appropriate buffer. */ + = SYMBOLP (read_key_sequence_cmd) + ? Fcommand_remapping (read_key_sequence_cmd, Qnil, Qnil) + : Qnil; + + unread_switch_frame = delayed_switch_frame; + unbind_to (count, Qnil); + + /* Don't downcase the last character if the caller says don't. + Don't downcase it if the result is undefined, either. */ + if ((dont_downcase_last || NILP (current_binding)) + && t > 0 + && t - 1 == original_uppercase_position) + { + keybuf[t - 1] = original_uppercase; + shift_translated = 0; + } + + if (shift_translated) + Vthis_command_keys_shift_translated = Qt; + + /* Occasionally we fabricate events, perhaps by expanding something + according to function-key-map, or by adding a prefix symbol to a + mouse click in the scroll bar or modeline. In this cases, return + the entire generated key sequence, even if we hit an unbound + prefix or a definition before the end. This means that you will + be able to push back the event properly, and also means that + read-key-sequence will always return a logical unit. + + Better ideas? */ + for (; t < mock_input; t++) + { + if (echo_keystrokes_p ()) + echo_char (keybuf[t]); + add_command_key (keybuf[t]); + } + + UNGCPRO; + return t; +} + +static Lisp_Object +read_key_sequence_vs (Lisp_Object prompt, Lisp_Object continue_echo, + Lisp_Object dont_downcase_last, + Lisp_Object can_return_switch_frame, + Lisp_Object cmd_loop, bool allow_string) +{ + Lisp_Object keybuf[30]; + register int i; + struct gcpro gcpro1; + ptrdiff_t count = SPECPDL_INDEX (); + + if (!NILP (prompt)) + CHECK_STRING (prompt); + QUIT; + + specbind (Qinput_method_exit_on_first_char, + (NILP (cmd_loop) ? Qt : Qnil)); + specbind (Qinput_method_use_echo_area, + (NILP (cmd_loop) ? Qt : Qnil)); + + memset (keybuf, 0, sizeof keybuf); + GCPRO1 (keybuf[0]); + gcpro1.nvars = ARRAYELTS (keybuf); + + if (NILP (continue_echo)) + { + this_command_key_count = 0; + this_command_key_count_reset = 0; + this_single_command_key_start = 0; + } + +#ifdef HAVE_WINDOW_SYSTEM + if (display_hourglass_p) + cancel_hourglass (); +#endif + + i = read_key_sequence (keybuf, ARRAYELTS (keybuf), + prompt, ! NILP (dont_downcase_last), + ! NILP (can_return_switch_frame), 0, 0); + +#if 0 /* The following is fine for code reading a key sequence and + then proceeding with a lengthy computation, but it's not good + for code reading keys in a loop, like an input method. */ +#ifdef HAVE_WINDOW_SYSTEM + if (display_hourglass_p) + start_hourglass (); +#endif +#endif + + if (i == -1) + { + Vquit_flag = Qt; + QUIT; + } + UNGCPRO; + return unbind_to (count, + ((allow_string ? make_event_array : Fvector) + (i, keybuf))); +} + +DEFUN ("read-key-sequence", Fread_key_sequence, Sread_key_sequence, 1, 5, 0, + doc: /* Read a sequence of keystrokes and return as a string or vector. +The sequence is sufficient to specify a non-prefix command in the +current local and global maps. + +First arg PROMPT is a prompt string. If nil, do not prompt specially. +Second (optional) arg CONTINUE-ECHO, if non-nil, means this key echos +as a continuation of the previous key. + +The third (optional) arg DONT-DOWNCASE-LAST, if non-nil, means do not +convert the last event to lower case. (Normally any upper case event +is converted to lower case if the original event is undefined and the lower +case equivalent is defined.) A non-nil value is appropriate for reading +a key sequence to be defined. + +A C-g typed while in this function is treated like any other character, +and `quit-flag' is not set. + +If the key sequence starts with a mouse click, then the sequence is read +using the keymaps of the buffer of the window clicked in, not the buffer +of the selected window as normal. + +`read-key-sequence' drops unbound button-down events, since you normally +only care about the click or drag events which follow them. If a drag +or multi-click event is unbound, but the corresponding click event would +be bound, `read-key-sequence' turns the event into a click event at the +drag's starting position. This means that you don't have to distinguish +between click and drag, double, or triple events unless you want to. + +`read-key-sequence' prefixes mouse events on mode lines, the vertical +lines separating windows, and scroll bars with imaginary keys +`mode-line', `vertical-line', and `vertical-scroll-bar'. + +Optional fourth argument CAN-RETURN-SWITCH-FRAME non-nil means that this +function will process a switch-frame event if the user switches frames +before typing anything. If the user switches frames in the middle of a +key sequence, or at the start of the sequence but CAN-RETURN-SWITCH-FRAME +is nil, then the event will be put off until after the current key sequence. + +`read-key-sequence' checks `function-key-map' for function key +sequences, where they wouldn't conflict with ordinary bindings. See +`function-key-map' for more details. + +The optional fifth argument CMD-LOOP, if non-nil, means +that this key sequence is being read by something that will +read commands one after another. It should be nil if the caller +will read just one key sequence. */) + (Lisp_Object prompt, Lisp_Object continue_echo, Lisp_Object dont_downcase_last, Lisp_Object can_return_switch_frame, Lisp_Object cmd_loop) +{ + return read_key_sequence_vs (prompt, continue_echo, dont_downcase_last, + can_return_switch_frame, cmd_loop, true); +} + +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector, + Sread_key_sequence_vector, 1, 5, 0, + doc: /* Like `read-key-sequence' but always return a vector. */) + (Lisp_Object prompt, Lisp_Object continue_echo, Lisp_Object dont_downcase_last, Lisp_Object can_return_switch_frame, Lisp_Object cmd_loop) +{ + return read_key_sequence_vs (prompt, continue_echo, dont_downcase_last, + can_return_switch_frame, cmd_loop, false); +} + +/* Return true if input events are pending. */ + +bool +detect_input_pending (void) +{ + return input_pending || get_input_pending (0); +} + +/* Return true if input events other than mouse movements are + pending. */ + +bool +detect_input_pending_ignore_squeezables (void) +{ + return input_pending || get_input_pending (READABLE_EVENTS_IGNORE_SQUEEZABLES); +} + +/* Return true if input events are pending, and run any pending timers. */ + +bool +detect_input_pending_run_timers (bool do_display) +{ + unsigned old_timers_run = timers_run; + + if (!input_pending) + get_input_pending (READABLE_EVENTS_DO_TIMERS_NOW); + + if (old_timers_run != timers_run && do_display) + redisplay_preserve_echo_area (8); + + return input_pending; +} + +/* This is called in some cases before a possible quit. + It cases the next call to detect_input_pending to recompute input_pending. + So calling this function unnecessarily can't do any harm. */ + +void +clear_input_pending (void) +{ + input_pending = 0; +} + +/* Return true if there are pending requeued events. + This isn't used yet. The hope is to make wait_reading_process_output + call it, and return if it runs Lisp code that unreads something. + The problem is, kbd_buffer_get_event needs to be fixed to know what + to do in that case. It isn't trivial. */ + +bool +requeued_events_pending_p (void) +{ + return (!NILP (Vunread_command_events)); +} + +DEFUN ("input-pending-p", Finput_pending_p, Sinput_pending_p, 0, 1, 0, + doc: /* Return t if command input is currently available with no wait. +Actually, the value is nil only if we can be sure that no input is available; +if there is a doubt, the value is t. + +If CHECK-TIMERS is non-nil, timers that are ready to run will do so. */) + (Lisp_Object check_timers) +{ + if (!NILP (Vunread_command_events) + || !NILP (Vunread_post_input_method_events) + || !NILP (Vunread_input_method_events)) + return (Qt); + + /* Process non-user-visible events (Bug#10195). */ + process_special_events (); + + return (get_input_pending ((NILP (check_timers) + ? 0 : READABLE_EVENTS_DO_TIMERS_NOW) + | READABLE_EVENTS_FILTER_EVENTS) + ? Qt : Qnil); +} + +DEFUN ("recent-keys", Frecent_keys, Srecent_keys, 0, 1, 0, + doc: /* Return vector of last few events, not counting those from keyboard macros. +If INCLUDE-CMDS is non-nil, include the commands that were run, +represented as events of the form (nil . COMMAND). */) + (Lisp_Object include_cmds) +{ + bool cmds = !NILP (include_cmds); + + if (!total_keys + || (cmds && total_keys < NUM_RECENT_KEYS)) + return Fvector (total_keys, + XVECTOR (recent_keys)->contents); + else + { + Lisp_Object es = Qnil; + int i = (total_keys < NUM_RECENT_KEYS + ? 0 : recent_keys_index); + eassert (recent_keys_index < NUM_RECENT_KEYS); + do + { + Lisp_Object e = AREF (recent_keys, i); + if (cmds || !CONSP (e) || !NILP (XCAR (e))) + es = Fcons (e, es); + if (++i >= NUM_RECENT_KEYS) + i = 0; + } while (i != recent_keys_index); + es = Fnreverse (es); + return Fvconcat (1, &es); + } +} + +DEFUN ("this-command-keys", Fthis_command_keys, Sthis_command_keys, 0, 0, 0, + doc: /* Return the key sequence that invoked this command. +However, if the command has called `read-key-sequence', it returns +the last key sequence that has been read. +The value is a string or a vector. + +See also `this-command-keys-vector'. */) + (void) +{ + return make_event_array (this_command_key_count, + XVECTOR (this_command_keys)->contents); +} + +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector, Sthis_command_keys_vector, 0, 0, 0, + doc: /* Return the key sequence that invoked this command, as a vector. +However, if the command has called `read-key-sequence', it returns +the last key sequence that has been read. + +See also `this-command-keys'. */) + (void) +{ + return Fvector (this_command_key_count, + XVECTOR (this_command_keys)->contents); +} + +DEFUN ("this-single-command-keys", Fthis_single_command_keys, + Sthis_single_command_keys, 0, 0, 0, + doc: /* Return the key sequence that invoked this command. +More generally, it returns the last key sequence read, either by +the command loop or by `read-key-sequence'. +Unlike `this-command-keys', this function's value +does not include prefix arguments. +The value is always a vector. */) + (void) +{ + return Fvector (this_command_key_count + - this_single_command_key_start, + (XVECTOR (this_command_keys)->contents + + this_single_command_key_start)); +} + +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys, + Sthis_single_command_raw_keys, 0, 0, 0, + doc: /* Return the raw events that were read for this command. +More generally, it returns the last key sequence read, either by +the command loop or by `read-key-sequence'. +Unlike `this-single-command-keys', this function's value +shows the events before all translations (except for input methods). +The value is always a vector. */) + (void) +{ + return Fvector (raw_keybuf_count, XVECTOR (raw_keybuf)->contents); +} + +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths, + Sreset_this_command_lengths, 0, 0, 0, + doc: /* Make the unread events replace the last command and echo. +Used in `universal-argument-other-key'. + +`universal-argument-other-key' rereads the event just typed. +It then gets translated through `function-key-map'. +The translated event has to replace the real events, +both in the value of (this-command-keys) and in echoing. +To achieve this, `universal-argument-other-key' calls +`reset-this-command-lengths', which discards the record of reading +these events the first time. */) + (void) +{ + this_command_key_count = before_command_key_count; + if (this_command_key_count < this_single_command_key_start) + this_single_command_key_start = this_command_key_count; + + echo_truncate (before_command_echo_length); + + /* Cause whatever we put into unread-command-events + to echo as if it were being freshly read from the keyboard. */ + this_command_key_count_reset = 1; + + return Qnil; +} + +DEFUN ("clear-this-command-keys", Fclear_this_command_keys, + Sclear_this_command_keys, 0, 1, 0, + doc: /* Clear out the vector that `this-command-keys' returns. +Also clear the record of the last 100 events, unless optional arg +KEEP-RECORD is non-nil. */) + (Lisp_Object keep_record) +{ + int i; + + this_command_key_count = 0; + this_command_key_count_reset = 0; + + if (NILP (keep_record)) + { + for (i = 0; i < ASIZE (recent_keys); ++i) + ASET (recent_keys, i, Qnil); + total_keys = 0; + recent_keys_index = 0; + } + return Qnil; +} + +DEFUN ("recursion-depth", Frecursion_depth, Srecursion_depth, 0, 0, 0, + doc: /* Return the current depth in recursive edits. */) + (void) +{ + Lisp_Object temp; + /* Wrap around reliably on integer overflow. */ + EMACS_INT sum = (command_loop_level & INTMASK) + (minibuf_level & INTMASK); + XSETINT (temp, sum); + return temp; +} + +DEFUN ("open-dribble-file", Fopen_dribble_file, Sopen_dribble_file, 1, 1, + "FOpen dribble file: ", + doc: /* Start writing all keyboard characters to a dribble file called FILE. +If FILE is nil, close any open dribble file. +The file will be closed when Emacs exits. + +Be aware that this records ALL characters you type! +This may include sensitive information such as passwords. */) + (Lisp_Object file) +{ + if (dribble) + { + block_input (); + fclose (dribble); + unblock_input (); + dribble = 0; + } + if (!NILP (file)) + { + int fd; + Lisp_Object encfile; + + file = Fexpand_file_name (file, Qnil); + encfile = ENCODE_FILE (file); + fd = emacs_open (SSDATA (encfile), O_WRONLY | O_CREAT | O_EXCL, 0600); + if (fd < 0 && errno == EEXIST && unlink (SSDATA (encfile)) == 0) + fd = emacs_open (SSDATA (encfile), O_WRONLY | O_CREAT | O_EXCL, 0600); + dribble = fd < 0 ? 0 : fdopen (fd, "w"); + if (dribble == 0) + report_file_error ("Opening dribble", file); + } + return Qnil; +} + +DEFUN ("discard-input", Fdiscard_input, Sdiscard_input, 0, 0, 0, + doc: /* Discard the contents of the terminal input buffer. +Also end any kbd macro being defined. */) + (void) +{ + if (!NILP (KVAR (current_kboard, defining_kbd_macro))) + { + /* Discard the last command from the macro. */ + Fcancel_kbd_macro_events (); + end_kbd_macro (); + } + + Vunread_command_events = Qnil; + + discard_tty_input (); + + kbd_fetch_ptr = kbd_store_ptr; + input_pending = 0; + + return Qnil; +} + +DEFUN ("suspend-emacs", Fsuspend_emacs, Ssuspend_emacs, 0, 1, "", + doc: /* Stop Emacs and return to superior process. You can resume later. +If `cannot-suspend' is non-nil, or if the system doesn't support job +control, run a subshell instead. + +If optional arg STUFFSTRING is non-nil, its characters are stuffed +to be read as terminal input by Emacs's parent, after suspension. + +Before suspending, run the normal hook `suspend-hook'. +After resumption run the normal hook `suspend-resume-hook'. + +Some operating systems cannot stop the Emacs process and resume it later. +On such systems, Emacs starts a subshell instead of suspending. */) + (Lisp_Object stuffstring) +{ + ptrdiff_t count = SPECPDL_INDEX (); + int old_height, old_width; + int width, height; + struct gcpro gcpro1; + + if (tty_list && tty_list->next) + error ("There are other tty frames open; close them before suspending Emacs"); + + if (!NILP (stuffstring)) + CHECK_STRING (stuffstring); + + run_hook (intern ("suspend-hook")); + + GCPRO1 (stuffstring); + get_tty_size (fileno (CURTTY ()->input), &old_width, &old_height); + reset_all_sys_modes (); + /* sys_suspend can get an error if it tries to fork a subshell + and the system resources aren't available for that. */ + record_unwind_protect_void (init_all_sys_modes); + stuff_buffered_input (stuffstring); + if (cannot_suspend) + sys_subshell (); + else + sys_suspend (); + unbind_to (count, Qnil); + + /* Check if terminal/window size has changed. + Note that this is not useful when we are running directly + with a window system; but suspend should be disabled in that case. */ + get_tty_size (fileno (CURTTY ()->input), &width, &height); + if (width != old_width || height != old_height) + change_frame_size (SELECTED_FRAME (), width, + height - FRAME_MENU_BAR_LINES (SELECTED_FRAME ()), + 0, 0, 0, 0); + + run_hook (intern ("suspend-resume-hook")); + + UNGCPRO; + return Qnil; +} + +/* If STUFFSTRING is a string, stuff its contents as pending terminal input. + Then in any case stuff anything Emacs has read ahead and not used. */ + +void +stuff_buffered_input (Lisp_Object stuffstring) +{ +#ifdef SIGTSTP /* stuff_char is defined if SIGTSTP. */ + register unsigned char *p; + + if (STRINGP (stuffstring)) + { + register ptrdiff_t count; + + p = SDATA (stuffstring); + count = SBYTES (stuffstring); + while (count-- > 0) + stuff_char (*p++); + stuff_char ('\n'); + } + + /* Anything we have read ahead, put back for the shell to read. */ + /* ?? What should this do when we have multiple keyboards?? + Should we ignore anything that was typed in at the "wrong" kboard? + + rms: we should stuff everything back into the kboard + it came from. */ + for (; kbd_fetch_ptr != kbd_store_ptr; kbd_fetch_ptr++) + { + + if (kbd_fetch_ptr == kbd_buffer + KBD_BUFFER_SIZE) + kbd_fetch_ptr = kbd_buffer; + if (kbd_fetch_ptr->kind == ASCII_KEYSTROKE_EVENT) + stuff_char (kbd_fetch_ptr->code); + + clear_event (kbd_fetch_ptr); + } + + input_pending = 0; +#endif /* SIGTSTP */ +} + +void +set_waiting_for_input (struct timespec *time_to_clear) +{ + input_available_clear_time = time_to_clear; + + /* Tell handle_interrupt to throw back to read_char, */ + waiting_for_input = 1; + + /* If handle_interrupt was called before and buffered a C-g, + make it run again now, to avoid timing error. */ + if (!NILP (Vquit_flag)) + quit_throw_to_read_char (0); +} + +void +clear_waiting_for_input (void) +{ + /* Tell handle_interrupt not to throw back to read_char, */ + waiting_for_input = 0; + input_available_clear_time = 0; +} + +/* The SIGINT handler. + + If we have a frame on the controlling tty, we assume that the + SIGINT was generated by C-g, so we call handle_interrupt. + Otherwise, tell QUIT to kill Emacs. */ + +static void +handle_interrupt_signal (int sig) +{ + /* See if we have an active terminal on our controlling tty. */ + struct terminal *terminal = get_named_terminal ("/dev/tty"); + if (!terminal) + { + /* If there are no frames there, let's pretend that we are a + well-behaving UN*X program and quit. We must not call Lisp + in a signal handler, so tell QUIT to exit when it is + safe. */ + Vquit_flag = Qkill_emacs; + } + else + { + /* Otherwise, the SIGINT was probably generated by C-g. */ + + /* Set internal_last_event_frame to the top frame of the + controlling tty, if we have a frame there. We disable the + interrupt key on secondary ttys, so the SIGINT must have come + from the controlling tty. */ + internal_last_event_frame = terminal->display_info.tty->top_frame; + + handle_interrupt (1); + } +} + +static void +deliver_interrupt_signal (int sig) +{ + deliver_process_signal (sig, handle_interrupt_signal); +} + + +/* If Emacs is stuck because `inhibit-quit' is true, then keep track + of the number of times C-g has been requested. If C-g is pressed + enough times, then quit anyway. See bug#6585. */ +static int volatile force_quit_count; + +/* This routine is called at interrupt level in response to C-g. + + It is called from the SIGINT handler or kbd_buffer_store_event. + + If `waiting_for_input' is non zero, then unless `echoing' is + nonzero, immediately throw back to read_char. + + Otherwise it sets the Lisp variable quit-flag not-nil. This causes + eval to throw, when it gets a chance. If quit-flag is already + non-nil, it stops the job right away. */ + +static void +handle_interrupt (bool in_signal_handler) +{ + char c; + + cancel_echoing (); + + /* XXX This code needs to be revised for multi-tty support. */ + if (!NILP (Vquit_flag) && get_named_terminal ("/dev/tty")) + { + if (! in_signal_handler) + { + /* If SIGINT isn't blocked, don't let us be interrupted by + a SIGINT. It might be harmful due to non-reentrancy + in I/O functions. */ + sigset_t blocked; + sigemptyset (&blocked); + sigaddset (&blocked, SIGINT); + pthread_sigmask (SIG_BLOCK, &blocked, 0); + } + + fflush (stdout); + reset_all_sys_modes (); + +#ifdef SIGTSTP +/* + * On systems which can suspend the current process and return to the original + * shell, this command causes the user to end up back at the shell. + * The "Auto-save" and "Abort" questions are not asked until + * the user elects to return to emacs, at which point he can save the current + * job and either dump core or continue. + */ + sys_suspend (); +#else + /* Perhaps should really fork an inferior shell? + But that would not provide any way to get back + to the original shell, ever. */ + printf ("No support for stopping a process on this operating system;\n"); + printf ("you can continue or abort.\n"); +#endif /* not SIGTSTP */ +#ifdef MSDOS + /* We must remain inside the screen area when the internal terminal + is used. Note that [Enter] is not echoed by dos. */ + cursor_to (SELECTED_FRAME (), 0, 0); +#endif + /* It doesn't work to autosave while GC is in progress; + the code used for auto-saving doesn't cope with the mark bit. */ + if (!gc_in_progress) + { + printf ("Auto-save? (y or n) "); + fflush (stdout); + if (((c = getchar ()) & ~040) == 'Y') + { + Fdo_auto_save (Qt, Qnil); +#ifdef MSDOS + printf ("\r\nAuto-save done"); +#else /* not MSDOS */ + printf ("Auto-save done\n"); +#endif /* not MSDOS */ + } + while (c != '\n') c = getchar (); + } + else + { + /* During GC, it must be safe to reenable quitting again. */ + Vinhibit_quit = Qnil; +#ifdef MSDOS + printf ("\r\n"); +#endif /* not MSDOS */ + printf ("Garbage collection in progress; cannot auto-save now\r\n"); + printf ("but will instead do a real quit after garbage collection ends\r\n"); + fflush (stdout); + } + +#ifdef MSDOS + printf ("\r\nAbort? (y or n) "); +#else /* not MSDOS */ + printf ("Abort (and dump core)? (y or n) "); +#endif /* not MSDOS */ + fflush (stdout); + if (((c = getchar ()) & ~040) == 'Y') + emacs_abort (); + while (c != '\n') c = getchar (); +#ifdef MSDOS + printf ("\r\nContinuing...\r\n"); +#else /* not MSDOS */ + printf ("Continuing...\n"); +#endif /* not MSDOS */ + fflush (stdout); + init_all_sys_modes (); + } + else + { + /* If executing a function that wants to be interrupted out of + and the user has not deferred quitting by binding `inhibit-quit' + then quit right away. */ + if (immediate_quit && NILP (Vinhibit_quit)) + { + struct gl_state_s saved; + struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + + immediate_quit = 0; + pthread_sigmask (SIG_SETMASK, &empty_mask, 0); + saved = gl_state; + GCPRO4 (saved.object, saved.global_code, + saved.current_syntax_table, saved.old_prop); + Fsignal (Qquit, Qnil); + gl_state = saved; + UNGCPRO; + } + else + { /* Else request quit when it's safe. */ + int count = NILP (Vquit_flag) ? 1 : force_quit_count + 1; + force_quit_count = count; + if (count == 3) + { + immediate_quit = 1; + Vinhibit_quit = Qnil; + } + Vquit_flag = Qt; + } + } + + pthread_sigmask (SIG_SETMASK, &empty_mask, 0); + +/* TODO: The longjmp in this call throws the NS event loop integration off, + and it seems to do fine without this. Probably some attention + needs to be paid to the setting of waiting_for_input in + wait_reading_process_output() under HAVE_NS because of the call + to ns_select there (needed because otherwise events aren't picked up + outside of polling since we don't get SIGIO like X and we don't have a + separate event loop thread like W32. */ +#ifndef HAVE_NS + if (waiting_for_input && !echoing) + quit_throw_to_read_char (in_signal_handler); +#endif +} + +/* Handle a C-g by making read_char return C-g. */ + +static void +quit_throw_to_read_char (bool from_signal) +{ + /* When not called from a signal handler it is safe to call + Lisp. */ + if (!from_signal && EQ (Vquit_flag, Qkill_emacs)) + Fkill_emacs (Qnil); + + /* Prevent another signal from doing this before we finish. */ + clear_waiting_for_input (); + input_pending = 0; + + Vunread_command_events = Qnil; + + if (FRAMEP (internal_last_event_frame) + && !EQ (internal_last_event_frame, selected_frame)) + do_switch_frame (make_lispy_switch_frame (internal_last_event_frame), + 0, 0, Qnil); + + sys_longjmp (getcjmp, 1); +} + +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode, + Sset_input_interrupt_mode, 1, 1, 0, + doc: /* Set interrupt mode of reading keyboard input. +If INTERRUPT is non-nil, Emacs will use input interrupts; +otherwise Emacs uses CBREAK mode. + +See also `current-input-mode'. */) + (Lisp_Object interrupt) +{ + bool new_interrupt_input; +#ifdef USABLE_SIGIO +#ifdef HAVE_X_WINDOWS + if (x_display_list != NULL) + { + /* When using X, don't give the user a real choice, + because we haven't implemented the mechanisms to support it. */ + new_interrupt_input = 1; + } + else +#endif /* HAVE_X_WINDOWS */ + new_interrupt_input = !NILP (interrupt); +#else /* not USABLE_SIGIO */ + new_interrupt_input = 0; +#endif /* not USABLE_SIGIO */ + + if (new_interrupt_input != interrupt_input) + { +#ifdef POLL_FOR_INPUT + stop_polling (); +#endif +#ifndef DOS_NT + /* this causes startup screen to be restored and messes with the mouse */ + reset_all_sys_modes (); + interrupt_input = new_interrupt_input; + init_all_sys_modes (); +#else + interrupt_input = new_interrupt_input; +#endif + +#ifdef POLL_FOR_INPUT + poll_suppress_count = 1; + start_polling (); +#endif + } + return Qnil; +} + +DEFUN ("set-output-flow-control", Fset_output_flow_control, Sset_output_flow_control, 1, 2, 0, + doc: /* Enable or disable ^S/^Q flow control for output to TERMINAL. +If FLOW is non-nil, flow control is enabled and you cannot use C-s or +C-q in key sequences. + +This setting only has an effect on tty terminals and only when +Emacs reads input in CBREAK mode; see `set-input-interrupt-mode'. + +See also `current-input-mode'. */) + (Lisp_Object flow, Lisp_Object terminal) +{ + struct terminal *t = decode_tty_terminal (terminal); + struct tty_display_info *tty; + + if (!t) + return Qnil; + tty = t->display_info.tty; + + if (tty->flow_control != !NILP (flow)) + { +#ifndef DOS_NT + /* This causes startup screen to be restored and messes with the mouse. */ + reset_sys_modes (tty); +#endif + + tty->flow_control = !NILP (flow); + +#ifndef DOS_NT + init_sys_modes (tty); +#endif + } + return Qnil; +} + +DEFUN ("set-input-meta-mode", Fset_input_meta_mode, Sset_input_meta_mode, 1, 2, 0, + doc: /* Enable or disable 8-bit input on TERMINAL. +If META is t, Emacs will accept 8-bit input, and interpret the 8th +bit as the Meta modifier. + +If META is nil, Emacs will ignore the top bit, on the assumption it is +parity. + +Otherwise, Emacs will accept and pass through 8-bit input without +specially interpreting the top bit. + +This setting only has an effect on tty terminal devices. + +Optional parameter TERMINAL specifies the tty terminal device to use. +It may be a terminal object, a frame, or nil for the terminal used by +the currently selected frame. + +See also `current-input-mode'. */) + (Lisp_Object meta, Lisp_Object terminal) +{ + struct terminal *t = decode_tty_terminal (terminal); + struct tty_display_info *tty; + int new_meta; + + if (!t) + return Qnil; + tty = t->display_info.tty; + + if (NILP (meta)) + new_meta = 0; + else if (EQ (meta, Qt)) + new_meta = 1; + else + new_meta = 2; + + if (tty->meta_key != new_meta) + { +#ifndef DOS_NT + /* this causes startup screen to be restored and messes with the mouse */ + reset_sys_modes (tty); +#endif + + tty->meta_key = new_meta; + +#ifndef DOS_NT + init_sys_modes (tty); +#endif + } + return Qnil; +} + +DEFUN ("set-quit-char", Fset_quit_char, Sset_quit_char, 1, 1, 0, + doc: /* Specify character used for quitting. +QUIT must be an ASCII character. + +This function only has an effect on the controlling tty of the Emacs +process. + +See also `current-input-mode'. */) + (Lisp_Object quit) +{ + struct terminal *t = get_named_terminal ("/dev/tty"); + struct tty_display_info *tty; + + if (!t) + return Qnil; + tty = t->display_info.tty; + + if (NILP (quit) || !INTEGERP (quit) || XINT (quit) < 0 || XINT (quit) > 0400) + error ("QUIT must be an ASCII character"); + +#ifndef DOS_NT + /* this causes startup screen to be restored and messes with the mouse */ + reset_sys_modes (tty); +#endif + + /* Don't let this value be out of range. */ + quit_char = XINT (quit) & (tty->meta_key == 0 ? 0177 : 0377); + +#ifndef DOS_NT + init_sys_modes (tty); +#endif + + return Qnil; +} + +DEFUN ("set-input-mode", Fset_input_mode, Sset_input_mode, 3, 4, 0, + doc: /* Set mode of reading keyboard input. +First arg INTERRUPT non-nil means use input interrupts; + nil means use CBREAK mode. +Second arg FLOW non-nil means use ^S/^Q flow control for output to terminal + (no effect except in CBREAK mode). +Third arg META t means accept 8-bit input (for a Meta key). + META nil means ignore the top bit, on the assumption it is parity. + Otherwise, accept 8-bit input and don't use the top bit for Meta. +Optional fourth arg QUIT if non-nil specifies character to use for quitting. +See also `current-input-mode'. */) + (Lisp_Object interrupt, Lisp_Object flow, Lisp_Object meta, Lisp_Object quit) +{ + Fset_input_interrupt_mode (interrupt); + Fset_output_flow_control (flow, Qnil); + Fset_input_meta_mode (meta, Qnil); + if (!NILP (quit)) + Fset_quit_char (quit); + return Qnil; +} + +DEFUN ("current-input-mode", Fcurrent_input_mode, Scurrent_input_mode, 0, 0, 0, + doc: /* Return information about the way Emacs currently reads keyboard input. +The value is a list of the form (INTERRUPT FLOW META QUIT), where + INTERRUPT is non-nil if Emacs is using interrupt-driven input; if + nil, Emacs is using CBREAK mode. + FLOW is non-nil if Emacs uses ^S/^Q flow control for output to the + terminal; this does not apply if Emacs uses interrupt-driven input. + META is t if accepting 8-bit input with 8th bit as Meta flag. + META nil means ignoring the top bit, on the assumption it is parity. + META is neither t nor nil if accepting 8-bit input and using + all 8 bits as the character code. + QUIT is the character Emacs currently uses to quit. +The elements of this list correspond to the arguments of +`set-input-mode'. */) + (void) +{ + struct frame *sf = XFRAME (selected_frame); + + Lisp_Object interrupt = interrupt_input ? Qt : Qnil; + Lisp_Object flow, meta; + if (FRAME_TERMCAP_P (sf) || FRAME_MSDOS_P (sf)) + { + flow = FRAME_TTY (sf)->flow_control ? Qt : Qnil; + meta = (FRAME_TTY (sf)->meta_key == 2 + ? make_number (0) + : (CURTTY ()->meta_key == 1 ? Qt : Qnil)); + } + else + { + flow = Qnil; + meta = Qt; + } + Lisp_Object quit = make_number (quit_char); + + return list4 (interrupt, flow, meta, quit); +} + +DEFUN ("posn-at-x-y", Fposn_at_x_y, Sposn_at_x_y, 2, 4, 0, + doc: /* Return position information for pixel coordinates X and Y. +By default, X and Y are relative to text area of the selected window. +Optional third arg FRAME-OR-WINDOW non-nil specifies frame or window. +If optional fourth arg WHOLE is non-nil, X is relative to the left +edge of the window. + +The return value is similar to a mouse click position: + (WINDOW AREA-OR-POS (X . Y) TIMESTAMP OBJECT POS (COL . ROW) + IMAGE (DX . DY) (WIDTH . HEIGHT)) +The `posn-' functions access elements of such lists. */) + (Lisp_Object x, Lisp_Object y, Lisp_Object frame_or_window, Lisp_Object whole) +{ + CHECK_NATNUM (x); + CHECK_NATNUM (y); + + if (NILP (frame_or_window)) + frame_or_window = selected_window; + + if (WINDOWP (frame_or_window)) + { + struct window *w = decode_live_window (frame_or_window); + + XSETINT (x, (XINT (x) + + WINDOW_LEFT_EDGE_X (w) + + (NILP (whole) + ? window_box_left_offset (w, TEXT_AREA) + : 0))); + XSETINT (y, WINDOW_TO_FRAME_PIXEL_Y (w, XINT (y))); + frame_or_window = w->frame; + } + + CHECK_LIVE_FRAME (frame_or_window); + + return make_lispy_position (XFRAME (frame_or_window), x, y, 0); +} + +DEFUN ("posn-at-point", Fposn_at_point, Sposn_at_point, 0, 2, 0, + doc: /* Return position information for buffer POS in WINDOW. +POS defaults to point in WINDOW; WINDOW defaults to the selected window. + +Return nil if position is not visible in window. Otherwise, +the return value is similar to that returned by `event-start' for +a mouse click at the upper left corner of the glyph corresponding +to the given buffer position: + (WINDOW AREA-OR-POS (X . Y) TIMESTAMP OBJECT POS (COL . ROW) + IMAGE (DX . DY) (WIDTH . HEIGHT)) +The `posn-' functions access elements of such lists. */) + (Lisp_Object pos, Lisp_Object window) +{ + Lisp_Object tem; + + if (NILP (window)) + window = selected_window; + + tem = Fpos_visible_in_window_p (pos, window, Qt); + if (!NILP (tem)) + { + Lisp_Object x = XCAR (tem); + Lisp_Object y = XCAR (XCDR (tem)); + + /* Point invisible due to hscrolling? */ + if (XINT (x) < 0) + return Qnil; + tem = Fposn_at_x_y (x, y, window, Qnil); + } + + return tem; +} + +/* Set up a new kboard object with reasonable initial values. + TYPE is a window system for which this keyboard is used. */ + +static void +init_kboard (KBOARD *kb, Lisp_Object type) +{ + kset_overriding_terminal_local_map (kb, Qnil); + kset_last_command (kb, Qnil); + kset_real_last_command (kb, Qnil); + kset_keyboard_translate_table (kb, Qnil); + kset_last_repeatable_command (kb, Qnil); + kset_prefix_arg (kb, Qnil); + kset_last_prefix_arg (kb, Qnil); + kset_kbd_queue (kb, Qnil); + kb->kbd_queue_has_data = 0; + kb->immediate_echo = 0; + kset_echo_string (kb, Qnil); + kb->echo_after_prompt = -1; + kb->kbd_macro_buffer = 0; + kb->kbd_macro_bufsize = 0; + kset_defining_kbd_macro (kb, Qnil); + kset_last_kbd_macro (kb, Qnil); + kb->reference_count = 0; + kset_system_key_alist (kb, Qnil); + kset_system_key_syms (kb, Qnil); + kset_window_system (kb, type); + kset_input_decode_map (kb, Fmake_sparse_keymap (Qnil)); + kset_local_function_key_map (kb, Fmake_sparse_keymap (Qnil)); + Fset_keymap_parent (KVAR (kb, Vlocal_function_key_map), Vfunction_key_map); + kset_default_minibuffer_frame (kb, Qnil); +} + +/* Allocate and basically initialize keyboard + object to use with window system TYPE. */ + +KBOARD * +allocate_kboard (Lisp_Object type) +{ + KBOARD *kb = xmalloc (sizeof *kb); + + init_kboard (kb, type); + kb->next_kboard = all_kboards; + all_kboards = kb; + return kb; +} + +/* + * Destroy the contents of a kboard object, but not the object itself. + * We use this just before deleting it, or if we're going to initialize + * it a second time. + */ +static void +wipe_kboard (KBOARD *kb) +{ + xfree (kb->kbd_macro_buffer); +} + +/* Free KB and memory referenced from it. */ + +void +delete_kboard (KBOARD *kb) +{ + KBOARD **kbp; + + for (kbp = &all_kboards; *kbp != kb; kbp = &(*kbp)->next_kboard) + if (*kbp == NULL) + emacs_abort (); + *kbp = kb->next_kboard; + + /* Prevent a dangling reference to KB. */ + if (kb == current_kboard + && FRAMEP (selected_frame) + && FRAME_LIVE_P (XFRAME (selected_frame))) + { + current_kboard = FRAME_KBOARD (XFRAME (selected_frame)); + single_kboard = 0; + if (current_kboard == kb) + emacs_abort (); + } + + wipe_kboard (kb); + xfree (kb); +} + +void +init_keyboard (void) +{ + /* This is correct before outermost invocation of the editor loop. */ + command_loop_level = -1; + immediate_quit = 0; + quit_char = Ctl ('g'); + Vunread_command_events = Qnil; + timer_idleness_start_time = invalid_timespec (); + total_keys = 0; + recent_keys_index = 0; + kbd_fetch_ptr = kbd_buffer; + kbd_store_ptr = kbd_buffer; + do_mouse_tracking = Qnil; + input_pending = 0; + interrupt_input_blocked = 0; + pending_signals = 0; + + /* This means that command_loop_1 won't try to select anything the first + time through. */ + internal_last_event_frame = Qnil; + Vlast_event_frame = internal_last_event_frame; + + current_kboard = initial_kboard; + /* Re-initialize the keyboard again. */ + wipe_kboard (current_kboard); + /* A value of nil for Vwindow_system normally means a tty, but we also use + it for the initial terminal since there is no window system there. */ + init_kboard (current_kboard, Qnil); + + if (!noninteractive) + { + /* Before multi-tty support, these handlers used to be installed + only if the current session was a tty session. Now an Emacs + session may have multiple display types, so we always handle + SIGINT. There is special code in handle_interrupt_signal to exit + Emacs on SIGINT when there are no termcap frames on the + controlling terminal. */ + struct sigaction action; + emacs_sigaction_init (&action, deliver_interrupt_signal); + sigaction (SIGINT, &action, 0); +#ifndef DOS_NT + /* For systems with SysV TERMIO, C-g is set up for both SIGINT and + SIGQUIT and we can't tell which one it will give us. */ + sigaction (SIGQUIT, &action, 0); +#endif /* not DOS_NT */ + } +#ifdef USABLE_SIGIO + if (!noninteractive) + { + struct sigaction action; + emacs_sigaction_init (&action, deliver_input_available_signal); + sigaction (SIGIO, &action, 0); + } +#endif + +/* Use interrupt input by default, if it works and noninterrupt input + has deficiencies. */ + +#ifdef INTERRUPT_INPUT + interrupt_input = 1; +#else + interrupt_input = 0; +#endif + + pthread_sigmask (SIG_SETMASK, &empty_mask, 0); + dribble = 0; + + if (keyboard_init_hook) + (*keyboard_init_hook) (); + +#ifdef POLL_FOR_INPUT + poll_timer = NULL; + poll_suppress_count = 1; + start_polling (); +#endif +} + +/* This type's only use is in syms_of_keyboard, to put properties on the + event header symbols. */ +struct event_head +{ + short var; + short kind; +}; + +static const struct event_head head_table[] = { + {SYMBOL_INDEX (Qmouse_movement), SYMBOL_INDEX (Qmouse_movement)}, + {SYMBOL_INDEX (Qscroll_bar_movement), SYMBOL_INDEX (Qmouse_movement)}, + + /* Some of the event heads. */ + {SYMBOL_INDEX (Qswitch_frame), SYMBOL_INDEX (Qswitch_frame)}, + + {SYMBOL_INDEX (Qfocus_in), SYMBOL_INDEX (Qfocus_in)}, + {SYMBOL_INDEX (Qfocus_out), SYMBOL_INDEX (Qfocus_out)}, + {SYMBOL_INDEX (Qdelete_frame), SYMBOL_INDEX (Qdelete_frame)}, + {SYMBOL_INDEX (Qiconify_frame), SYMBOL_INDEX (Qiconify_frame)}, + {SYMBOL_INDEX (Qmake_frame_visible), SYMBOL_INDEX (Qmake_frame_visible)}, + /* `select-window' should be handled just like `switch-frame' + in read_key_sequence. */ + {SYMBOL_INDEX (Qselect_window), SYMBOL_INDEX (Qswitch_frame)} +}; + +void +syms_of_keyboard (void) +{ + pending_funcalls = Qnil; + staticpro (&pending_funcalls); + + Vlispy_mouse_stem = build_pure_c_string ("mouse"); + staticpro (&Vlispy_mouse_stem); + + regular_top_level_message = build_pure_c_string ("Back to top level"); +#ifdef HAVE_STACK_OVERFLOW_HANDLING + recover_top_level_message + = build_pure_c_string ("Re-entering top level after C stack overflow"); +#endif + DEFVAR_LISP ("internal--top-level-message", Vinternal__top_level_message, + doc: /* Message displayed by `normal-top-level'. */); + Vinternal__top_level_message = regular_top_level_message; + + /* Tool-bars. */ + DEFSYM (QCimage, ":image"); + DEFSYM (Qhelp_echo, "help-echo"); + DEFSYM (QCrtl, ":rtl"); + + staticpro (&item_properties); + item_properties = Qnil; + + staticpro (&tool_bar_item_properties); + tool_bar_item_properties = Qnil; + staticpro (&tool_bar_items_vector); + tool_bar_items_vector = Qnil; + + DEFSYM (Qtimer_event_handler, "timer-event-handler"); + DEFSYM (Qdisabled_command_function, "disabled-command-function"); + DEFSYM (Qself_insert_command, "self-insert-command"); + DEFSYM (Qforward_char, "forward-char"); + DEFSYM (Qbackward_char, "backward-char"); + + /* Non-nil disable property on a command means do not execute it; + call disabled-command-function's value instead. */ + DEFSYM (Qdisabled, "disabled"); + + DEFSYM (Qundefined, "undefined"); + + /* Hooks to run before and after each command. */ + DEFSYM (Qpre_command_hook, "pre-command-hook"); + DEFSYM (Qpost_command_hook, "post-command-hook"); + + DEFSYM (Qdeferred_action_function, "deferred-action-function"); + DEFSYM (Qdelayed_warnings_hook, "delayed-warnings-hook"); + DEFSYM (Qfunction_key, "function-key"); + + /* The values of Qevent_kind properties. */ + DEFSYM (Qmouse_click, "mouse-click"); + + DEFSYM (Qdrag_n_drop, "drag-n-drop"); + DEFSYM (Qsave_session, "save-session"); + DEFSYM (Qconfig_changed_event, "config-changed-event"); + + /* Menu and tool bar item parts. */ + DEFSYM (Qmenu_enable, "menu-enable"); + +#ifdef HAVE_NTGUI + DEFSYM (Qlanguage_change, "language-change"); +#endif + +#ifdef HAVE_DBUS + DEFSYM (Qdbus_event, "dbus-event"); +#endif + +#ifdef USE_FILE_NOTIFY + DEFSYM (Qfile_notify, "file-notify"); +#endif /* USE_FILE_NOTIFY */ + + /* Menu and tool bar item parts. */ + DEFSYM (QCenable, ":enable"); + DEFSYM (QCvisible, ":visible"); + DEFSYM (QChelp, ":help"); + DEFSYM (QCfilter, ":filter"); + DEFSYM (QCbutton, ":button"); + DEFSYM (QCkeys, ":keys"); + DEFSYM (QCkey_sequence, ":key-sequence"); + + /* Non-nil disable property on a command means + do not execute it; call disabled-command-function's value instead. */ + DEFSYM (QCtoggle, ":toggle"); + DEFSYM (QCradio, ":radio"); + DEFSYM (QClabel, ":label"); + DEFSYM (QCvert_only, ":vert-only"); + + /* Symbols to use for parts of windows. */ + DEFSYM (Qvertical_line, "vertical-line"); + DEFSYM (Qright_divider, "right-divider"); + DEFSYM (Qbottom_divider, "bottom-divider"); + + DEFSYM (Qmouse_fixup_help_message, "mouse-fixup-help-message"); + + DEFSYM (Qabove_handle, "above-handle"); + DEFSYM (Qhandle, "handle"); + DEFSYM (Qbelow_handle, "below-handle"); + DEFSYM (Qup, "up"); + DEFSYM (Qdown, "down"); + DEFSYM (Qtop, "top"); + DEFSYM (Qbottom, "bottom"); + DEFSYM (Qend_scroll, "end-scroll"); + DEFSYM (Qratio, "ratio"); + DEFSYM (Qbefore_handle, "before-handle"); + DEFSYM (Qhorizontal_handle, "horizontal-handle"); + DEFSYM (Qafter_handle, "after-handle"); + DEFSYM (Qleft, "left"); + DEFSYM (Qright, "right"); + DEFSYM (Qleftmost, "leftmost"); + DEFSYM (Qrightmost, "rightmost"); + + /* Properties of event headers. */ + DEFSYM (Qevent_kind, "event-kind"); + DEFSYM (Qevent_symbol_elements, "event-symbol-elements"); + + /* An event header symbol HEAD may have a property named + Qevent_symbol_element_mask, which is of the form (BASE MODIFIERS); + BASE is the base, unmodified version of HEAD, and MODIFIERS is the + mask of modifiers applied to it. If present, this is used to help + speed up parse_modifiers. */ + DEFSYM (Qevent_symbol_element_mask, "event-symbol-element-mask"); + + /* An unmodified event header BASE may have a property named + Qmodifier_cache, which is an alist mapping modifier masks onto + modified versions of BASE. If present, this helps speed up + apply_modifiers. */ + DEFSYM (Qmodifier_cache, "modifier-cache"); + + DEFSYM (Qrecompute_lucid_menubar, "recompute-lucid-menubar"); + DEFSYM (Qactivate_menubar_hook, "activate-menubar-hook"); + + DEFSYM (Qpolling_period, "polling-period"); + + DEFSYM (Qgui_set_selection, "gui-set-selection"); + + /* The primary selection. */ + DEFSYM (QPRIMARY, "PRIMARY"); + + DEFSYM (Qhandle_switch_frame, "handle-switch-frame"); + DEFSYM (Qhandle_select_window, "handle-select-window"); + + DEFSYM (Qinput_method_function, "input-method-function"); + DEFSYM (Qinput_method_exit_on_first_char, "input-method-exit-on-first-char"); + DEFSYM (Qinput_method_use_echo_area, "input-method-use-echo-area"); + + DEFSYM (Qhelp_form_show, "help-form-show"); + + DEFSYM (Qecho_keystrokes, "echo-keystrokes"); + + Fset (Qinput_method_exit_on_first_char, Qnil); + Fset (Qinput_method_use_echo_area, Qnil); + + /* Symbols to head events. */ + DEFSYM (Qmouse_movement, "mouse-movement"); + DEFSYM (Qscroll_bar_movement, "scroll-bar-movement"); + DEFSYM (Qswitch_frame, "switch-frame"); + DEFSYM (Qfocus_in, "focus-in"); + DEFSYM (Qfocus_out, "focus-out"); + DEFSYM (Qdelete_frame, "delete-frame"); + DEFSYM (Qiconify_frame, "iconify-frame"); + DEFSYM (Qmake_frame_visible, "make-frame-visible"); + DEFSYM (Qselect_window, "select-window"); + { + int i; + + for (i = 0; i < ARRAYELTS (head_table); i++) + { + const struct event_head *p = &head_table[i]; + Lisp_Object var = builtin_lisp_symbol (p->var); + Lisp_Object kind = builtin_lisp_symbol (p->kind); + Fput (var, Qevent_kind, kind); + Fput (var, Qevent_symbol_elements, list1 (var)); + } + } + + button_down_location = Fmake_vector (make_number (5), Qnil); + staticpro (&button_down_location); + mouse_syms = Fmake_vector (make_number (5), Qnil); + staticpro (&mouse_syms); + wheel_syms = Fmake_vector (make_number (ARRAYELTS (lispy_wheel_names)), + Qnil); + staticpro (&wheel_syms); + + { + int i; + int len = ARRAYELTS (modifier_names); + + modifier_symbols = Fmake_vector (make_number (len), Qnil); + for (i = 0; i < len; i++) + if (modifier_names[i]) + ASET (modifier_symbols, i, intern_c_string (modifier_names[i])); + staticpro (&modifier_symbols); + } + + recent_keys = Fmake_vector (make_number (NUM_RECENT_KEYS), Qnil); + staticpro (&recent_keys); + + this_command_keys = Fmake_vector (make_number (40), Qnil); + staticpro (&this_command_keys); + + raw_keybuf = Fmake_vector (make_number (30), Qnil); + staticpro (&raw_keybuf); + + DEFSYM (Qcommand_execute, "command-execute"); + + accent_key_syms = Qnil; + staticpro (&accent_key_syms); + + func_key_syms = Qnil; + staticpro (&func_key_syms); + + drag_n_drop_syms = Qnil; + staticpro (&drag_n_drop_syms); + + unread_switch_frame = Qnil; + staticpro (&unread_switch_frame); + + internal_last_event_frame = Qnil; + staticpro (&internal_last_event_frame); + + read_key_sequence_cmd = Qnil; + staticpro (&read_key_sequence_cmd); + read_key_sequence_remapped = Qnil; + staticpro (&read_key_sequence_remapped); + + menu_bar_one_keymap_changed_items = Qnil; + staticpro (&menu_bar_one_keymap_changed_items); + + menu_bar_items_vector = Qnil; + staticpro (&menu_bar_items_vector); + + help_form_saved_window_configs = Qnil; + staticpro (&help_form_saved_window_configs); + + defsubr (&Scurrent_idle_time); + defsubr (&Sevent_symbol_parse_modifiers); + defsubr (&Sevent_convert_list); + defsubr (&Sread_key_sequence); + defsubr (&Sread_key_sequence_vector); + defsubr (&Srecursive_edit); + defsubr (&Strack_mouse); + defsubr (&Sinput_pending_p); + defsubr (&Srecent_keys); + defsubr (&Sthis_command_keys); + defsubr (&Sthis_command_keys_vector); + defsubr (&Sthis_single_command_keys); + defsubr (&Sthis_single_command_raw_keys); + defsubr (&Sreset_this_command_lengths); + defsubr (&Sclear_this_command_keys); + defsubr (&Ssuspend_emacs); + defsubr (&Sabort_recursive_edit); + defsubr (&Sexit_recursive_edit); + defsubr (&Srecursion_depth); + defsubr (&Scommand_error_default_function); + defsubr (&Stop_level); + defsubr (&Sdiscard_input); + defsubr (&Sopen_dribble_file); + defsubr (&Sset_input_interrupt_mode); + defsubr (&Sset_output_flow_control); + defsubr (&Sset_input_meta_mode); + defsubr (&Sset_quit_char); + defsubr (&Sset_input_mode); + defsubr (&Scurrent_input_mode); + defsubr (&Sposn_at_point); + defsubr (&Sposn_at_x_y); + + DEFVAR_LISP ("last-command-event", last_command_event, + doc: /* Last input event that was part of a command. */); + + DEFVAR_LISP ("last-nonmenu-event", last_nonmenu_event, + doc: /* Last input event in a command, except for mouse menu events. +Mouse menus give back keys that don't look like mouse events; +this variable holds the actual mouse event that led to the menu, +so that you can determine whether the command was run by mouse or not. */); + + DEFVAR_LISP ("last-input-event", last_input_event, + doc: /* Last input event. */); + + DEFVAR_LISP ("unread-command-events", Vunread_command_events, + doc: /* List of events to be read as the command input. +These events are processed first, before actual keyboard input. +Events read from this list are not normally added to `this-command-keys', +as they will already have been added once as they were read for the first time. +An element of the form (t . EVENT) forces EVENT to be added to that list. */); + Vunread_command_events = Qnil; + + DEFVAR_LISP ("unread-post-input-method-events", Vunread_post_input_method_events, + doc: /* List of events to be processed as input by input methods. +These events are processed before `unread-command-events' +and actual keyboard input, but are not given to `input-method-function'. */); + Vunread_post_input_method_events = Qnil; + + DEFVAR_LISP ("unread-input-method-events", Vunread_input_method_events, + doc: /* List of events to be processed as input by input methods. +These events are processed after `unread-command-events', but +before actual keyboard input. +If there's an active input method, the events are given to +`input-method-function'. */); + Vunread_input_method_events = Qnil; + + DEFVAR_LISP ("meta-prefix-char", meta_prefix_char, + doc: /* Meta-prefix character code. +Meta-foo as command input turns into this character followed by foo. */); + XSETINT (meta_prefix_char, 033); + + DEFVAR_KBOARD ("last-command", Vlast_command, + doc: /* The last command executed. +Normally a symbol with a function definition, but can be whatever was found +in the keymap, or whatever the variable `this-command' was set to by that +command. + +The value `mode-exit' is special; it means that the previous command +read an event that told it to exit, and it did so and unread that event. +In other words, the present command is the event that made the previous +command exit. + +The value `kill-region' is special; it means that the previous command +was a kill command. + +`last-command' has a separate binding for each terminal device. +See Info node `(elisp)Multiple Terminals'. */); + + DEFVAR_KBOARD ("real-last-command", Vreal_last_command, + doc: /* Same as `last-command', but never altered by Lisp code. +Taken from the previous value of `real-this-command'. */); + + DEFVAR_KBOARD ("last-repeatable-command", Vlast_repeatable_command, + doc: /* Last command that may be repeated. +The last command executed that was not bound to an input event. +This is the command `repeat' will try to repeat. +Taken from a previous value of `real-this-command'. */); + + DEFVAR_LISP ("this-command", Vthis_command, + doc: /* The command now being executed. +The command can set this variable; whatever is put here +will be in `last-command' during the following command. */); + Vthis_command = Qnil; + + DEFVAR_LISP ("real-this-command", Vreal_this_command, + doc: /* This is like `this-command', except that commands should never modify it. */); + Vreal_this_command = Qnil; + + DEFVAR_LISP ("this-command-keys-shift-translated", + Vthis_command_keys_shift_translated, + doc: /* Non-nil if the key sequence activating this command was shift-translated. +Shift-translation occurs when there is no binding for the key sequence +as entered, but a binding was found by changing an upper-case letter +to lower-case, or a shifted function key to an unshifted one. */); + Vthis_command_keys_shift_translated = Qnil; + + DEFVAR_LISP ("this-original-command", Vthis_original_command, + doc: /* The command bound to the current key sequence before remapping. +It equals `this-command' if the original command was not remapped through +any of the active keymaps. Otherwise, the value of `this-command' is the +result of looking up the original command in the active keymaps. */); + Vthis_original_command = Qnil; + + DEFVAR_INT ("auto-save-interval", auto_save_interval, + doc: /* Number of input events between auto-saves. +Zero means disable autosaving due to number of characters typed. */); + auto_save_interval = 300; + + DEFVAR_LISP ("auto-save-timeout", Vauto_save_timeout, + doc: /* Number of seconds idle time before auto-save. +Zero or nil means disable auto-saving due to idleness. +After auto-saving due to this many seconds of idle time, +Emacs also does a garbage collection if that seems to be warranted. */); + XSETFASTINT (Vauto_save_timeout, 30); + + DEFVAR_LISP ("echo-keystrokes", Vecho_keystrokes, + doc: /* Nonzero means echo unfinished commands after this many seconds of pause. +The value may be integer or floating point. +If the value is zero, don't echo at all. */); + Vecho_keystrokes = make_number (1); + + DEFVAR_INT ("polling-period", polling_period, + doc: /* Interval between polling for input during Lisp execution. +The reason for polling is to make C-g work to stop a running program. +Polling is needed only when using X windows and SIGIO does not work. +Polling is automatically disabled in all other cases. */); + polling_period = 2; + + DEFVAR_LISP ("double-click-time", Vdouble_click_time, + doc: /* Maximum time between mouse clicks to make a double-click. +Measured in milliseconds. The value nil means disable double-click +recognition; t means double-clicks have no time limit and are detected +by position only. */); + Vdouble_click_time = make_number (500); + + DEFVAR_INT ("double-click-fuzz", double_click_fuzz, + doc: /* Maximum mouse movement between clicks to make a double-click. +On window-system frames, value is the number of pixels the mouse may have +moved horizontally or vertically between two clicks to make a double-click. +On non window-system frames, value is interpreted in units of 1/8 characters +instead of pixels. + +This variable is also the threshold for motion of the mouse +to count as a drag. */); + double_click_fuzz = 3; + + DEFVAR_INT ("num-input-keys", num_input_keys, + doc: /* Number of complete key sequences read as input so far. +This includes key sequences read from keyboard macros. +The number is effectively the number of interactive command invocations. */); + num_input_keys = 0; + + DEFVAR_INT ("num-nonmacro-input-events", num_nonmacro_input_events, + doc: /* Number of input events read from the keyboard so far. +This does not include events generated by keyboard macros. */); + num_nonmacro_input_events = 0; + + DEFVAR_LISP ("last-event-frame", Vlast_event_frame, + doc: /* The frame in which the most recently read event occurred. +If the last event came from a keyboard macro, this is set to `macro'. */); + Vlast_event_frame = Qnil; + + /* This variable is set up in sysdep.c. */ + DEFVAR_LISP ("tty-erase-char", Vtty_erase_char, + doc: /* The ERASE character as set by the user with stty. */); + + DEFVAR_LISP ("help-char", Vhelp_char, + doc: /* Character to recognize as meaning Help. +When it is read, do `(eval help-form)', and display result if it's a string. +If the value of `help-form' is nil, this char can be read normally. */); + XSETINT (Vhelp_char, Ctl ('H')); + + DEFVAR_LISP ("help-event-list", Vhelp_event_list, + doc: /* List of input events to recognize as meaning Help. +These work just like the value of `help-char' (see that). */); + Vhelp_event_list = Qnil; + + DEFVAR_LISP ("help-form", Vhelp_form, + doc: /* Form to execute when character `help-char' is read. +If the form returns a string, that string is displayed. +If `help-form' is nil, the help char is not recognized. */); + Vhelp_form = Qnil; + + DEFVAR_LISP ("prefix-help-command", Vprefix_help_command, + doc: /* Command to run when `help-char' character follows a prefix key. +This command is used only when there is no actual binding +for that character after that prefix key. */); + Vprefix_help_command = Qnil; + + DEFVAR_LISP ("top-level", Vtop_level, + doc: /* Form to evaluate when Emacs starts up. +Useful to set before you dump a modified Emacs. */); + Vtop_level = Qnil; + XSYMBOL (Qtop_level)->declared_special = false; + + DEFVAR_KBOARD ("keyboard-translate-table", Vkeyboard_translate_table, + doc: /* Translate table for local keyboard input, or nil. +If non-nil, the value should be a char-table. Each character read +from the keyboard is looked up in this char-table. If the value found +there is non-nil, then it is used instead of the actual input character. + +The value can also be a string or vector, but this is considered obsolete. +If it is a string or vector of length N, character codes N and up are left +untranslated. In a vector, an element which is nil means "no translation". + +This is applied to the characters supplied to input methods, not their +output. See also `translation-table-for-input'. + +This variable has a separate binding for each terminal. +See Info node `(elisp)Multiple Terminals'. */); + + DEFVAR_BOOL ("cannot-suspend", cannot_suspend, + doc: /* Non-nil means to always spawn a subshell instead of suspending. +\(Even if the operating system has support for stopping a process.\) */); + cannot_suspend = 0; + + DEFVAR_BOOL ("menu-prompting", menu_prompting, + doc: /* Non-nil means prompt with menus when appropriate. +This is done when reading from a keymap that has a prompt string, +for elements that have prompt strings. +The menu is displayed on the screen +if X menus were enabled at configuration +time and the previous event was a mouse click prefix key. +Otherwise, menu prompting uses the echo area. */); + menu_prompting = 1; + + DEFVAR_LISP ("menu-prompt-more-char", menu_prompt_more_char, + doc: /* Character to see next line of menu prompt. +Type this character while in a menu prompt to rotate around the lines of it. */); + XSETINT (menu_prompt_more_char, ' '); + + DEFVAR_INT ("extra-keyboard-modifiers", extra_keyboard_modifiers, + doc: /* A mask of additional modifier keys to use with every keyboard character. +Emacs applies the modifiers of the character stored here to each keyboard +character it reads. For example, after evaluating the expression + (setq extra-keyboard-modifiers ?\\C-x) +all input characters will have the control modifier applied to them. + +Note that the character ?\\C-@, equivalent to the integer zero, does +not count as a control character; rather, it counts as a character +with no modifiers; thus, setting `extra-keyboard-modifiers' to zero +cancels any modification. */); + extra_keyboard_modifiers = 0; + + DEFSYM (Qdeactivate_mark, "deactivate-mark"); + DEFVAR_LISP ("deactivate-mark", Vdeactivate_mark, + doc: /* If an editing command sets this to t, deactivate the mark afterward. +The command loop sets this to nil before each command, +and tests the value when the command returns. +Buffer modification stores t in this variable. */); + Vdeactivate_mark = Qnil; + Fmake_variable_buffer_local (Qdeactivate_mark); + + DEFVAR_LISP ("pre-command-hook", Vpre_command_hook, + doc: /* Normal hook run before each command is executed. +If an unhandled error happens in running this hook, +the function in which the error occurred is unconditionally removed, since +otherwise the error might happen repeatedly and make Emacs nonfunctional. */); + Vpre_command_hook = Qnil; + + DEFVAR_LISP ("post-command-hook", Vpost_command_hook, + doc: /* Normal hook run after each command is executed. +If an unhandled error happens in running this hook, +the function in which the error occurred is unconditionally removed, since +otherwise the error might happen repeatedly and make Emacs nonfunctional. */); + Vpost_command_hook = Qnil; + +#if 0 + DEFVAR_LISP ("echo-area-clear-hook", ..., + doc: /* Normal hook run when clearing the echo area. */); +#endif + DEFSYM (Qecho_area_clear_hook, "echo-area-clear-hook"); + Fset (Qecho_area_clear_hook, Qnil); + + DEFVAR_LISP ("lucid-menu-bar-dirty-flag", Vlucid_menu_bar_dirty_flag, + doc: /* Non-nil means menu bar, specified Lucid style, needs to be recomputed. */); + Vlucid_menu_bar_dirty_flag = Qnil; + + DEFVAR_LISP ("menu-bar-final-items", Vmenu_bar_final_items, + doc: /* List of menu bar items to move to the end of the menu bar. +The elements of the list are event types that may have menu bar bindings. */); + Vmenu_bar_final_items = Qnil; + + DEFVAR_LISP ("tool-bar-separator-image-expression", Vtool_bar_separator_image_expression, + doc: /* Expression evaluating to the image spec for a tool-bar separator. +This is used internally by graphical displays that do not render +tool-bar separators natively. Otherwise it is unused (e.g. on GTK). */); + Vtool_bar_separator_image_expression = Qnil; + + DEFVAR_KBOARD ("overriding-terminal-local-map", + Voverriding_terminal_local_map, + doc: /* Per-terminal keymap that takes precedence over all other keymaps. +This variable is intended to let commands such as `universal-argument' +set up a different keymap for reading the next command. + +`overriding-terminal-local-map' has a separate binding for each +terminal device. See Info node `(elisp)Multiple Terminals'. */); + + DEFVAR_LISP ("overriding-local-map", Voverriding_local_map, + doc: /* Keymap that replaces (overrides) local keymaps. +If this variable is non-nil, Emacs looks up key bindings in this +keymap INSTEAD OF the keymap char property, minor mode maps, and the +buffer's local map. Hence, the only active keymaps would be +`overriding-terminal-local-map', this keymap, and `global-keymap', in +order of precedence. */); + Voverriding_local_map = Qnil; + + DEFVAR_LISP ("overriding-local-map-menu-flag", Voverriding_local_map_menu_flag, + doc: /* Non-nil means `overriding-local-map' applies to the menu bar. +Otherwise, the menu bar continues to reflect the buffer's local map +and the minor mode maps regardless of `overriding-local-map'. */); + Voverriding_local_map_menu_flag = Qnil; + + DEFVAR_LISP ("special-event-map", Vspecial_event_map, + doc: /* Keymap defining bindings for special events to execute at low level. */); + Vspecial_event_map = list1 (Qkeymap); + + DEFVAR_LISP ("track-mouse", do_mouse_tracking, + doc: /* Non-nil means generate motion events for mouse motion. */); + + DEFVAR_KBOARD ("system-key-alist", Vsystem_key_alist, + doc: /* Alist of system-specific X windows key symbols. +Each element should have the form (N . SYMBOL) where N is the +numeric keysym code (sans the \"system-specific\" bit 1<<28) +and SYMBOL is its name. + +`system-key-alist' has a separate binding for each terminal device. +See Info node `(elisp)Multiple Terminals'. */); + + DEFVAR_KBOARD ("local-function-key-map", Vlocal_function_key_map, + doc: /* Keymap that translates key sequences to key sequences during input. +This is used mainly for mapping key sequences into some preferred +key events (symbols). + +The `read-key-sequence' function replaces any subsequence bound by +`local-function-key-map' with its binding. More precisely, when the +active keymaps have no binding for the current key sequence but +`local-function-key-map' binds a suffix of the sequence to a vector or +string, `read-key-sequence' replaces the matching suffix with its +binding, and continues with the new sequence. + +If the binding is a function, it is called with one argument (the prompt) +and its return value (a key sequence) is used. + +The events that come from bindings in `local-function-key-map' are not +themselves looked up in `local-function-key-map'. + +For example, suppose `local-function-key-map' binds `ESC O P' to [f1]. +Typing `ESC O P' to `read-key-sequence' would return [f1]. Typing +`C-x ESC O P' would return [?\\C-x f1]. If [f1] were a prefix key, +typing `ESC O P x' would return [f1 x]. + +`local-function-key-map' has a separate binding for each terminal +device. See Info node `(elisp)Multiple Terminals'. If you need to +define a binding on all terminals, change `function-key-map' +instead. Initially, `local-function-key-map' is an empty keymap that +has `function-key-map' as its parent on all terminal devices. */); + + DEFVAR_KBOARD ("input-decode-map", Vinput_decode_map, + doc: /* Keymap that decodes input escape sequences. +This is used mainly for mapping ASCII function key sequences into +real Emacs function key events (symbols). + +The `read-key-sequence' function replaces any subsequence bound by +`input-decode-map' with its binding. Contrary to `function-key-map', +this map applies its rebinding regardless of the presence of an ordinary +binding. So it is more like `key-translation-map' except that it applies +before `function-key-map' rather than after. + +If the binding is a function, it is called with one argument (the prompt) +and its return value (a key sequence) is used. + +The events that come from bindings in `input-decode-map' are not +themselves looked up in `input-decode-map'. */); + + DEFVAR_LISP ("function-key-map", Vfunction_key_map, + doc: /* The parent keymap of all `local-function-key-map' instances. +Function key definitions that apply to all terminal devices should go +here. If a mapping is defined in both the current +`local-function-key-map' binding and this variable, then the local +definition will take precedence. */); + Vfunction_key_map = Fmake_sparse_keymap (Qnil); + + DEFVAR_LISP ("key-translation-map", Vkey_translation_map, + doc: /* Keymap of key translations that can override keymaps. +This keymap works like `input-decode-map', but comes after `function-key-map'. +Another difference is that it is global rather than terminal-local. */); + Vkey_translation_map = Fmake_sparse_keymap (Qnil); + + DEFVAR_LISP ("deferred-action-list", Vdeferred_action_list, + doc: /* List of deferred actions to be performed at a later time. +The precise format isn't relevant here; we just check whether it is nil. */); + Vdeferred_action_list = Qnil; + + DEFVAR_LISP ("deferred-action-function", Vdeferred_action_function, + doc: /* Function to call to handle deferred actions, after each command. +This function is called with no arguments after each command +whenever `deferred-action-list' is non-nil. */); + Vdeferred_action_function = Qnil; + + DEFVAR_LISP ("delayed-warnings-list", Vdelayed_warnings_list, + doc: /* List of warnings to be displayed after this command. +Each element must be a list (TYPE MESSAGE [LEVEL [BUFFER-NAME]]), +as per the args of `display-warning' (which see). +If this variable is non-nil, `delayed-warnings-hook' will be run +immediately after running `post-command-hook'. */); + Vdelayed_warnings_list = Qnil; + + DEFVAR_LISP ("timer-list", Vtimer_list, + doc: /* List of active absolute time timers in order of increasing time. */); + Vtimer_list = Qnil; + + DEFVAR_LISP ("timer-idle-list", Vtimer_idle_list, + doc: /* List of active idle-time timers in order of increasing time. */); + Vtimer_idle_list = Qnil; + + DEFVAR_LISP ("input-method-function", Vinput_method_function, + doc: /* If non-nil, the function that implements the current input method. +It's called with one argument, a printing character that was just read. +\(That means a character with code 040...0176.) +Typically this function uses `read-event' to read additional events. +When it does so, it should first bind `input-method-function' to nil +so it will not be called recursively. + +The function should return a list of zero or more events +to be used as input. If it wants to put back some events +to be reconsidered, separately, by the input method, +it can add them to the beginning of `unread-command-events'. + +The input method function can find in `input-method-previous-message' +the previous echo area message. + +The input method function should refer to the variables +`input-method-use-echo-area' and `input-method-exit-on-first-char' +for guidance on what to do. */); + Vinput_method_function = Qlist; + + DEFVAR_LISP ("input-method-previous-message", + Vinput_method_previous_message, + doc: /* When `input-method-function' is called, hold the previous echo area message. +This variable exists because `read-event' clears the echo area +before running the input method. It is nil if there was no message. */); + Vinput_method_previous_message = Qnil; + + DEFVAR_LISP ("show-help-function", Vshow_help_function, + doc: /* If non-nil, the function that implements the display of help. +It's called with one argument, the help string to display. */); + Vshow_help_function = Qnil; + + DEFVAR_LISP ("disable-point-adjustment", Vdisable_point_adjustment, + doc: /* If non-nil, suppress point adjustment after executing a command. + +After a command is executed, if point is moved into a region that has +special properties (e.g. composition, display), we adjust point to +the boundary of the region. But, when a command sets this variable to +non-nil, we suppress the point adjustment. + +This variable is set to nil before reading a command, and is checked +just after executing the command. */); + Vdisable_point_adjustment = Qnil; + + DEFVAR_LISP ("global-disable-point-adjustment", + Vglobal_disable_point_adjustment, + doc: /* If non-nil, always suppress point adjustment. + +The default value is nil, in which case, point adjustment are +suppressed only after special commands that set +`disable-point-adjustment' (which see) to non-nil. */); + Vglobal_disable_point_adjustment = Qnil; + + DEFVAR_LISP ("minibuffer-message-timeout", Vminibuffer_message_timeout, + doc: /* How long to display an echo-area message when the minibuffer is active. +If the value is not a number, such messages don't time out. */); + Vminibuffer_message_timeout = make_number (2); + + DEFVAR_LISP ("throw-on-input", Vthrow_on_input, + doc: /* If non-nil, any keyboard input throws to this symbol. +The value of that variable is passed to `quit-flag' and later causes a +peculiar kind of quitting. */); + Vthrow_on_input = Qnil; + + DEFVAR_LISP ("command-error-function", Vcommand_error_function, + doc: /* Function to output error messages. +Called with three arguments: +- the error data, a list of the form (SIGNALED-CONDITION . SIGNAL-DATA) + such as what `condition-case' would bind its variable to, +- the context (a string which normally goes at the start of the message), +- the Lisp function within which the error was signaled. */); + Vcommand_error_function = intern ("command-error-default-function"); + + DEFVAR_LISP ("enable-disabled-menus-and-buttons", + Venable_disabled_menus_and_buttons, + doc: /* If non-nil, don't ignore events produced by disabled menu items and tool-bar. + +Help functions bind this to allow help on disabled menu items +and tool-bar buttons. */); + Venable_disabled_menus_and_buttons = Qnil; + + DEFVAR_LISP ("select-active-regions", + Vselect_active_regions, + doc: /* If non-nil, an active region automatically sets the primary selection. +If the value is `only', only temporarily active regions (usually made +by mouse-dragging or shift-selection) set the window selection. + +This takes effect only when Transient Mark mode is enabled. */); + Vselect_active_regions = Qt; + + DEFVAR_LISP ("saved-region-selection", + Vsaved_region_selection, + doc: /* Contents of active region prior to buffer modification. +If `select-active-regions' is non-nil, Emacs sets this to the +text in the region before modifying the buffer. The next call to +the function `deactivate-mark' uses this to set the window selection. */); + Vsaved_region_selection = Qnil; + + DEFVAR_LISP ("selection-inhibit-update-commands", + Vselection_inhibit_update_commands, + doc: /* List of commands which should not update the selection. +Normally, if `select-active-regions' is non-nil and the mark remains +active after a command (i.e. the mark was not deactivated), the Emacs +command loop sets the selection to the text in the region. However, +if the command is in this list, the selection is not updated. */); + Vselection_inhibit_update_commands + = list2 (Qhandle_switch_frame, Qhandle_select_window); + + DEFVAR_LISP ("debug-on-event", + Vdebug_on_event, + doc: /* Enter debugger on this event. When Emacs +receives the special event specified by this variable, it will try to +break into the debugger as soon as possible instead of processing the +event normally through `special-event-map'. + +Currently, the only supported values for this +variable are `sigusr1' and `sigusr2'. */); + Vdebug_on_event = intern_c_string ("sigusr2"); + + /* Create the initial keyboard. Qt means 'unset'. */ + initial_kboard = allocate_kboard (Qt); +} + +void +keys_of_keyboard (void) +{ + initial_define_key (global_map, Ctl ('Z'), "suspend-emacs"); + initial_define_key (control_x_map, Ctl ('Z'), "suspend-emacs"); + initial_define_key (meta_map, Ctl ('C'), "exit-recursive-edit"); + initial_define_key (global_map, Ctl (']'), "abort-recursive-edit"); + initial_define_key (meta_map, 'x', "execute-extended-command"); + + initial_define_lispy_key (Vspecial_event_map, "delete-frame", + "handle-delete-frame"); + initial_define_lispy_key (Vspecial_event_map, "ns-put-working-text", + "ns-put-working-text"); + initial_define_lispy_key (Vspecial_event_map, "ns-unput-working-text", + "ns-unput-working-text"); + /* Here we used to use `ignore-event' which would simple set prefix-arg to + current-prefix-arg, as is done in `handle-switch-frame'. + But `handle-switch-frame is not run from the special-map. + Commands from that map are run in a special way that automatically + preserves the prefix-arg. Restoring the prefix arg here is not just + redundant but harmful: + - C-u C-x v = + - current-prefix-arg is set to non-nil, prefix-arg is set to nil. + - after the first prompt, the exit-minibuffer-hook is run which may + iconify a frame and thus push a `iconify-frame' event. + - after running exit-minibuffer-hook, current-prefix-arg is + restored to the non-nil value it had before the prompt. + - we enter the second prompt. + current-prefix-arg is non-nil, prefix-arg is nil. + - before running the first real event, we run the special iconify-frame + event, but we pass the `special' arg to command-execute so + current-prefix-arg and prefix-arg are left untouched. + - here we foolishly copy the non-nil current-prefix-arg to prefix-arg. + - the next key event will have a spuriously non-nil current-prefix-arg. */ + initial_define_lispy_key (Vspecial_event_map, "iconify-frame", + "ignore"); + initial_define_lispy_key (Vspecial_event_map, "make-frame-visible", + "ignore"); + /* Handling it at such a low-level causes read_key_sequence to get + * confused because it doesn't realize that the current_buffer was + * changed by read_char. + * + * initial_define_lispy_key (Vspecial_event_map, "select-window", + * "handle-select-window"); */ + initial_define_lispy_key (Vspecial_event_map, "save-session", + "handle-save-session"); + +#ifdef HAVE_DBUS + /* Define a special event which is raised for dbus callback + functions. */ + initial_define_lispy_key (Vspecial_event_map, "dbus-event", + "dbus-handle-event"); +#endif + +#ifdef USE_FILE_NOTIFY + /* Define a special event which is raised for notification callback + functions. */ + initial_define_lispy_key (Vspecial_event_map, "file-notify", + "file-notify-handle-event"); +#endif /* USE_FILE_NOTIFY */ + + initial_define_lispy_key (Vspecial_event_map, "config-changed-event", + "ignore"); +#if defined (WINDOWSNT) + initial_define_lispy_key (Vspecial_event_map, "language-change", + "ignore"); +#endif + initial_define_lispy_key (Vspecial_event_map, "focus-in", + "handle-focus-in"); + initial_define_lispy_key (Vspecial_event_map, "focus-out", + "handle-focus-out"); +} + +/* Mark the pointers in the kboard objects. + Called by Fgarbage_collect. */ +void +mark_kboards (void) +{ + KBOARD *kb; + Lisp_Object *p; + for (kb = all_kboards; kb; kb = kb->next_kboard) + { + if (kb->kbd_macro_buffer) + for (p = kb->kbd_macro_buffer; p < kb->kbd_macro_ptr; p++) + mark_object (*p); + mark_object (KVAR (kb, Voverriding_terminal_local_map)); + mark_object (KVAR (kb, Vlast_command)); + mark_object (KVAR (kb, Vreal_last_command)); + mark_object (KVAR (kb, Vkeyboard_translate_table)); + mark_object (KVAR (kb, Vlast_repeatable_command)); + mark_object (KVAR (kb, Vprefix_arg)); + mark_object (KVAR (kb, Vlast_prefix_arg)); + mark_object (KVAR (kb, kbd_queue)); + mark_object (KVAR (kb, defining_kbd_macro)); + mark_object (KVAR (kb, Vlast_kbd_macro)); + mark_object (KVAR (kb, Vsystem_key_alist)); + mark_object (KVAR (kb, system_key_syms)); + mark_object (KVAR (kb, Vwindow_system)); + mark_object (KVAR (kb, Vinput_decode_map)); + mark_object (KVAR (kb, Vlocal_function_key_map)); + mark_object (KVAR (kb, Vdefault_minibuffer_frame)); + mark_object (KVAR (kb, echo_string)); + } + { + struct input_event *event; + for (event = kbd_fetch_ptr; event != kbd_store_ptr; event++) + { + if (event == kbd_buffer + KBD_BUFFER_SIZE) + event = kbd_buffer; + /* These two special event types has no Lisp_Objects to mark. */ + if (event->kind != SELECTION_REQUEST_EVENT + && event->kind != SELECTION_CLEAR_EVENT) + { + mark_object (event->x); + mark_object (event->y); + mark_object (event->frame_or_window); + mark_object (event->arg); + } + } + } +} diff --cc test/manual/etags/c-src/emacs/src/lisp.h index 96c52c04691,00000000000..db8722917ea mode 100644,000000..100644 --- a/test/manual/etags/c-src/emacs/src/lisp.h +++ b/test/manual/etags/c-src/emacs/src/lisp.h @@@ -1,4817 -1,0 +1,4817 @@@ +/* Fundamental definitions for GNU Emacs Lisp interpreter. + +Copyright (C) 1985-1987, 1993-1995, 1997-2016 Free Software Foundation, +Inc. + +This file is part of GNU Emacs. + +GNU Emacs is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. ++the Free Software Foundation, either version 3 of the License, or (at ++your option) any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs. If not, see . */ + +#ifndef EMACS_LISP_H +#define EMACS_LISP_H + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +INLINE_HEADER_BEGIN + +/* Define a TYPE constant ID as an externally visible name. Use like this: + + DEFINE_GDB_SYMBOL_BEGIN (TYPE, ID) + # define ID (some integer preprocessor expression of type TYPE) + DEFINE_GDB_SYMBOL_END (ID) + + This hack is for the benefit of compilers that do not make macro + definitions or enums visible to the debugger. It's used for symbols + that .gdbinit needs. */ + +#define DECLARE_GDB_SYM(type, id) type const id EXTERNALLY_VISIBLE +#ifdef MAIN_PROGRAM +# define DEFINE_GDB_SYMBOL_BEGIN(type, id) DECLARE_GDB_SYM (type, id) +# define DEFINE_GDB_SYMBOL_END(id) = id; +#else +# define DEFINE_GDB_SYMBOL_BEGIN(type, id) extern DECLARE_GDB_SYM (type, id) +# define DEFINE_GDB_SYMBOL_END(val) ; +#endif + +/* The ubiquitous max and min macros. */ +#undef min +#undef max +#define max(a, b) ((a) > (b) ? (a) : (b)) +#define min(a, b) ((a) < (b) ? (a) : (b)) + +/* Number of elements in an array. */ +#define ARRAYELTS(arr) (sizeof (arr) / sizeof (arr)[0]) + +/* Number of bits in a Lisp_Object tag. */ +DEFINE_GDB_SYMBOL_BEGIN (int, GCTYPEBITS) +#define GCTYPEBITS 3 +DEFINE_GDB_SYMBOL_END (GCTYPEBITS) + +/* The number of bits needed in an EMACS_INT over and above the number + of bits in a pointer. This is 0 on systems where: + 1. We can specify multiple-of-8 alignment on static variables. + 2. We know malloc returns a multiple of 8. */ +#if (defined alignas \ + && (defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ \ + || defined DARWIN_OS || defined __sun || defined __MINGW32__ \ + || defined CYGWIN)) +# define NONPOINTER_BITS 0 +#else +# define NONPOINTER_BITS GCTYPEBITS +#endif + +/* EMACS_INT - signed integer wide enough to hold an Emacs value + EMACS_INT_MAX - maximum value of EMACS_INT; can be used in #if + pI - printf length modifier for EMACS_INT + EMACS_UINT - unsigned variant of EMACS_INT */ +#ifndef EMACS_INT_MAX +# if INTPTR_MAX <= 0 +# error "INTPTR_MAX misconfigured" +# elif INTPTR_MAX <= INT_MAX >> NONPOINTER_BITS && !defined WIDE_EMACS_INT +typedef int EMACS_INT; +typedef unsigned int EMACS_UINT; +# define EMACS_INT_MAX INT_MAX +# define pI "" +# elif INTPTR_MAX <= LONG_MAX >> NONPOINTER_BITS && !defined WIDE_EMACS_INT +typedef long int EMACS_INT; +typedef unsigned long EMACS_UINT; +# define EMACS_INT_MAX LONG_MAX +# define pI "l" +/* Check versus LLONG_MAX, not LLONG_MAX >> NONPOINTER_BITS. + In theory this is not safe, but in practice it seems to be OK. */ +# elif INTPTR_MAX <= LLONG_MAX +typedef long long int EMACS_INT; +typedef unsigned long long int EMACS_UINT; +# define EMACS_INT_MAX LLONG_MAX +# define pI "ll" +# else +# error "INTPTR_MAX too large" +# endif +#endif + +/* Number of bits to put in each character in the internal representation + of bool vectors. This should not vary across implementations. */ +enum { BOOL_VECTOR_BITS_PER_CHAR = +#define BOOL_VECTOR_BITS_PER_CHAR 8 + BOOL_VECTOR_BITS_PER_CHAR +}; + +/* An unsigned integer type representing a fixed-length bit sequence, + suitable for bool vector words, GC mark bits, etc. Normally it is size_t + for speed, but it is unsigned char on weird platforms. */ +#if BOOL_VECTOR_BITS_PER_CHAR == CHAR_BIT +typedef size_t bits_word; +# define BITS_WORD_MAX SIZE_MAX +enum { BITS_PER_BITS_WORD = CHAR_BIT * sizeof (bits_word) }; +#else +typedef unsigned char bits_word; +# define BITS_WORD_MAX ((1u << BOOL_VECTOR_BITS_PER_CHAR) - 1) +enum { BITS_PER_BITS_WORD = BOOL_VECTOR_BITS_PER_CHAR }; +#endif +verify (BITS_WORD_MAX >> (BITS_PER_BITS_WORD - 1) == 1); + +/* Number of bits in some machine integer types. */ +enum + { + BITS_PER_CHAR = CHAR_BIT, + BITS_PER_SHORT = CHAR_BIT * sizeof (short), + BITS_PER_LONG = CHAR_BIT * sizeof (long int), + BITS_PER_EMACS_INT = CHAR_BIT * sizeof (EMACS_INT) + }; + +/* printmax_t and uprintmax_t are types for printing large integers. + These are the widest integers that are supported for printing. + pMd etc. are conversions for printing them. + On C99 hosts, there's no problem, as even the widest integers work. + Fall back on EMACS_INT on pre-C99 hosts. */ +#ifdef PRIdMAX +typedef intmax_t printmax_t; +typedef uintmax_t uprintmax_t; +# define pMd PRIdMAX +# define pMu PRIuMAX +#else +typedef EMACS_INT printmax_t; +typedef EMACS_UINT uprintmax_t; +# define pMd pI"d" +# define pMu pI"u" +#endif + +/* Use pD to format ptrdiff_t values, which suffice for indexes into + buffers and strings. Emacs never allocates objects larger than + PTRDIFF_MAX bytes, as they cause problems with pointer subtraction. + In C99, pD can always be "t"; configure it here for the sake of + pre-C99 libraries such as glibc 2.0 and Solaris 8. */ +#if PTRDIFF_MAX == INT_MAX +# define pD "" +#elif PTRDIFF_MAX == LONG_MAX +# define pD "l" +#elif PTRDIFF_MAX == LLONG_MAX +# define pD "ll" +#else +# define pD "t" +#endif + +/* Extra internal type checking? */ + +/* Define Emacs versions of 's 'assert (COND)' and 's + 'assume (COND)'. COND should be free of side effects, as it may or + may not be evaluated. + + 'eassert (COND)' checks COND at runtime if ENABLE_CHECKING is + defined and suppress_checking is false, and does nothing otherwise. + Emacs dies if COND is checked and is false. The suppress_checking + variable is initialized to 0 in alloc.c. Set it to 1 using a + debugger to temporarily disable aborting on detected internal + inconsistencies or error conditions. + + In some cases, a good compiler may be able to optimize away the + eassert macro even if ENABLE_CHECKING is true, e.g., if XSTRING (x) + uses eassert to test STRINGP (x), but a particular use of XSTRING + is invoked only after testing that STRINGP (x) is true, making the + test redundant. + + eassume is like eassert except that it also causes the compiler to + assume that COND is true afterwards, regardless of whether runtime + checking is enabled. This can improve performance in some cases, + though it can degrade performance in others. It's often suboptimal + for COND to call external functions or access volatile storage. */ + +#ifndef ENABLE_CHECKING +# define eassert(cond) ((void) (false && (cond))) /* Check COND compiles. */ +# define eassume(cond) assume (cond) +#else /* ENABLE_CHECKING */ + +extern _Noreturn void die (const char *, const char *, int); + +extern bool suppress_checking EXTERNALLY_VISIBLE; + +# define eassert(cond) \ + (suppress_checking || (cond) \ + ? (void) 0 \ + : die (# cond, __FILE__, __LINE__)) +# define eassume(cond) \ + (suppress_checking \ + ? assume (cond) \ + : (cond) \ + ? (void) 0 \ + : die (# cond, __FILE__, __LINE__)) +#endif /* ENABLE_CHECKING */ + + +/* Use the configure flag --enable-check-lisp-object-type to make + Lisp_Object use a struct type instead of the default int. The flag + causes CHECK_LISP_OBJECT_TYPE to be defined. */ + +/***** Select the tagging scheme. *****/ +/* The following option controls the tagging scheme: + - USE_LSB_TAG means that we can assume the least 3 bits of pointers are + always 0, and we can thus use them to hold tag bits, without + restricting our addressing space. + + If ! USE_LSB_TAG, then use the top 3 bits for tagging, thus + restricting our possible address range. + + USE_LSB_TAG not only requires the least 3 bits of pointers returned by + malloc to be 0 but also needs to be able to impose a mult-of-8 alignment + on the few static Lisp_Objects used: lispsym, all the defsubr, and + the two special buffers buffer_defaults and buffer_local_symbols. */ + +enum Lisp_Bits + { + /* 2**GCTYPEBITS. This must be a macro that expands to a literal + integer constant, for MSVC. */ +#define GCALIGNMENT 8 + + /* Number of bits in a Lisp_Object value, not counting the tag. */ + VALBITS = BITS_PER_EMACS_INT - GCTYPEBITS, + + /* Number of bits in a Lisp fixnum tag. */ + INTTYPEBITS = GCTYPEBITS - 1, + + /* Number of bits in a Lisp fixnum value, not counting the tag. */ + FIXNUM_BITS = VALBITS + 1 + }; + +#if GCALIGNMENT != 1 << GCTYPEBITS +# error "GCALIGNMENT and GCTYPEBITS are inconsistent" +#endif + +/* The maximum value that can be stored in a EMACS_INT, assuming all + bits other than the type bits contribute to a nonnegative signed value. + This can be used in #if, e.g., '#if USB_TAG' below expands to an + expression involving VAL_MAX. */ +#define VAL_MAX (EMACS_INT_MAX >> (GCTYPEBITS - 1)) + +/* Whether the least-significant bits of an EMACS_INT contain the tag. + On hosts where pointers-as-ints do not exceed VAL_MAX / 2, USE_LSB_TAG is: + a. unnecessary, because the top bits of an EMACS_INT are unused, and + b. slower, because it typically requires extra masking. + So, USE_LSB_TAG is true only on hosts where it might be useful. */ +DEFINE_GDB_SYMBOL_BEGIN (bool, USE_LSB_TAG) +#define USE_LSB_TAG (VAL_MAX / 2 < INTPTR_MAX) +DEFINE_GDB_SYMBOL_END (USE_LSB_TAG) + +#if !USE_LSB_TAG && !defined WIDE_EMACS_INT +# error "USE_LSB_TAG not supported on this platform; please report this." \ + "Try 'configure --with-wide-int' to work around the problem." +error !; +#endif + +#ifndef alignas +# define alignas(alignment) /* empty */ +# if USE_LSB_TAG +# error "USE_LSB_TAG requires alignas" +# endif +#endif + +#ifdef HAVE_STRUCT_ATTRIBUTE_ALIGNED +# define GCALIGNED __attribute__ ((aligned (GCALIGNMENT))) +#else +# define GCALIGNED /* empty */ +#endif + +/* Some operations are so commonly executed that they are implemented + as macros, not functions, because otherwise runtime performance would + suffer too much when compiling with GCC without optimization. + There's no need to inline everything, just the operations that + would otherwise cause a serious performance problem. + + For each such operation OP, define a macro lisp_h_OP that contains + the operation's implementation. That way, OP can be implemented + via a macro definition like this: + + #define OP(x) lisp_h_OP (x) + + and/or via a function definition like this: + + LISP_MACRO_DEFUN (OP, Lisp_Object, (Lisp_Object x), (x)) + + which macro-expands to this: + + Lisp_Object (OP) (Lisp_Object x) { return lisp_h_OP (x); } + + without worrying about the implementations diverging, since + lisp_h_OP defines the actual implementation. The lisp_h_OP macros + are intended to be private to this include file, and should not be + used elsewhere. + + FIXME: Remove the lisp_h_OP macros, and define just the inline OP + functions, once most developers have access to GCC 4.8 or later and + can use "gcc -Og" to debug. Maybe in the year 2016. See + Bug#11935. + + Commentary for these macros can be found near their corresponding + functions, below. */ + +#if CHECK_LISP_OBJECT_TYPE +# define lisp_h_XLI(o) ((o).i) +# define lisp_h_XIL(i) ((Lisp_Object) { i }) +#else +# define lisp_h_XLI(o) (o) +# define lisp_h_XIL(i) (i) +#endif +#define lisp_h_CHECK_LIST_CONS(x, y) CHECK_TYPE (CONSP (x), Qlistp, y) +#define lisp_h_CHECK_NUMBER(x) CHECK_TYPE (INTEGERP (x), Qintegerp, x) +#define lisp_h_CHECK_SYMBOL(x) CHECK_TYPE (SYMBOLP (x), Qsymbolp, x) +#define lisp_h_CHECK_TYPE(ok, predicate, x) \ + ((ok) ? (void) 0 : (void) wrong_type_argument (predicate, x)) +#define lisp_h_CONSP(x) (XTYPE (x) == Lisp_Cons) +#define lisp_h_EQ(x, y) (XLI (x) == XLI (y)) +#define lisp_h_FLOATP(x) (XTYPE (x) == Lisp_Float) +#define lisp_h_INTEGERP(x) ((XTYPE (x) & (Lisp_Int0 | ~Lisp_Int1)) == Lisp_Int0) +#define lisp_h_MARKERP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Marker) +#define lisp_h_MISCP(x) (XTYPE (x) == Lisp_Misc) +#define lisp_h_NILP(x) EQ (x, Qnil) +#define lisp_h_SET_SYMBOL_VAL(sym, v) \ + (eassert ((sym)->redirect == SYMBOL_PLAINVAL), (sym)->val.value = (v)) +#define lisp_h_SYMBOL_CONSTANT_P(sym) (XSYMBOL (sym)->constant) +#define lisp_h_SYMBOL_VAL(sym) \ + (eassert ((sym)->redirect == SYMBOL_PLAINVAL), (sym)->val.value) +#define lisp_h_SYMBOLP(x) (XTYPE (x) == Lisp_Symbol) +#define lisp_h_VECTORLIKEP(x) (XTYPE (x) == Lisp_Vectorlike) +#define lisp_h_XCAR(c) XCONS (c)->car +#define lisp_h_XCDR(c) XCONS (c)->u.cdr +#define lisp_h_XCONS(a) \ + (eassert (CONSP (a)), (struct Lisp_Cons *) XUNTAG (a, Lisp_Cons)) +#define lisp_h_XHASH(a) XUINT (a) +#define lisp_h_XPNTR(a) \ + (SYMBOLP (a) ? XSYMBOL (a) : (void *) ((intptr_t) (XLI (a) & VALMASK))) +#ifndef GC_CHECK_CONS_LIST +# define lisp_h_check_cons_list() ((void) 0) +#endif +#if USE_LSB_TAG +# define lisp_h_make_number(n) \ + XIL ((EMACS_INT) (((EMACS_UINT) (n) << INTTYPEBITS) + Lisp_Int0)) +# define lisp_h_XFASTINT(a) XINT (a) +# define lisp_h_XINT(a) (XLI (a) >> INTTYPEBITS) +# define lisp_h_XSYMBOL(a) \ + (eassert (SYMBOLP (a)), \ + (struct Lisp_Symbol *) ((uintptr_t) XLI (a) - Lisp_Symbol \ + + (char *) lispsym)) +# define lisp_h_XTYPE(a) ((enum Lisp_Type) (XLI (a) & ~VALMASK)) +# define lisp_h_XUNTAG(a, type) ((void *) (intptr_t) (XLI (a) - (type))) +#endif + +/* When compiling via gcc -O0, define the key operations as macros, as + Emacs is too slow otherwise. To disable this optimization, compile + with -DINLINING=false. */ +#if (defined __NO_INLINE__ \ + && ! defined __OPTIMIZE__ && ! defined __OPTIMIZE_SIZE__ \ + && ! (defined INLINING && ! INLINING)) +# define XLI(o) lisp_h_XLI (o) +# define XIL(i) lisp_h_XIL (i) +# define CHECK_LIST_CONS(x, y) lisp_h_CHECK_LIST_CONS (x, y) +# define CHECK_NUMBER(x) lisp_h_CHECK_NUMBER (x) +# define CHECK_SYMBOL(x) lisp_h_CHECK_SYMBOL (x) +# define CHECK_TYPE(ok, predicate, x) lisp_h_CHECK_TYPE (ok, predicate, x) +# define CONSP(x) lisp_h_CONSP (x) +# define EQ(x, y) lisp_h_EQ (x, y) +# define FLOATP(x) lisp_h_FLOATP (x) +# define INTEGERP(x) lisp_h_INTEGERP (x) +# define MARKERP(x) lisp_h_MARKERP (x) +# define MISCP(x) lisp_h_MISCP (x) +# define NILP(x) lisp_h_NILP (x) +# define SET_SYMBOL_VAL(sym, v) lisp_h_SET_SYMBOL_VAL (sym, v) +# define SYMBOL_CONSTANT_P(sym) lisp_h_SYMBOL_CONSTANT_P (sym) +# define SYMBOL_VAL(sym) lisp_h_SYMBOL_VAL (sym) +# define SYMBOLP(x) lisp_h_SYMBOLP (x) +# define VECTORLIKEP(x) lisp_h_VECTORLIKEP (x) +# define XCAR(c) lisp_h_XCAR (c) +# define XCDR(c) lisp_h_XCDR (c) +# define XCONS(a) lisp_h_XCONS (a) +# define XHASH(a) lisp_h_XHASH (a) +# define XPNTR(a) lisp_h_XPNTR (a) +# ifndef GC_CHECK_CONS_LIST +# define check_cons_list() lisp_h_check_cons_list () +# endif +# if USE_LSB_TAG +# define make_number(n) lisp_h_make_number (n) +# define XFASTINT(a) lisp_h_XFASTINT (a) +# define XINT(a) lisp_h_XINT (a) +# define XSYMBOL(a) lisp_h_XSYMBOL (a) +# define XTYPE(a) lisp_h_XTYPE (a) +# define XUNTAG(a, type) lisp_h_XUNTAG (a, type) +# endif +#endif + +/* Define NAME as a lisp.h inline function that returns TYPE and has + arguments declared as ARGDECLS and passed as ARGS. ARGDECLS and + ARGS should be parenthesized. Implement the function by calling + lisp_h_NAME ARGS. */ +#define LISP_MACRO_DEFUN(name, type, argdecls, args) \ + INLINE type (name) argdecls { return lisp_h_##name args; } + +/* like LISP_MACRO_DEFUN, except NAME returns void. */ +#define LISP_MACRO_DEFUN_VOID(name, argdecls, args) \ + INLINE void (name) argdecls { lisp_h_##name args; } + + +/* Define the fundamental Lisp data structures. */ + +/* This is the set of Lisp data types. If you want to define a new + data type, read the comments after Lisp_Fwd_Type definition + below. */ + +/* Lisp integers use 2 tags, to give them one extra bit, thus + extending their range from, e.g., -2^28..2^28-1 to -2^29..2^29-1. */ +#define INTMASK (EMACS_INT_MAX >> (INTTYPEBITS - 1)) +#define case_Lisp_Int case Lisp_Int0: case Lisp_Int1 + +/* Idea stolen from GDB. Pedantic GCC complains about enum bitfields, + MSVC doesn't support them, and xlc and Oracle Studio c99 complain + vociferously about them. */ +#if (defined __STRICT_ANSI__ || defined _MSC_VER || defined __IBMC__ \ + || (defined __SUNPRO_C && __STDC__)) +#define ENUM_BF(TYPE) unsigned int +#else +#define ENUM_BF(TYPE) enum TYPE +#endif + + +enum Lisp_Type + { + /* Symbol. XSYMBOL (object) points to a struct Lisp_Symbol. */ + Lisp_Symbol = 0, + + /* Miscellaneous. XMISC (object) points to a union Lisp_Misc, + whose first member indicates the subtype. */ + Lisp_Misc = 1, + + /* Integer. XINT (obj) is the integer value. */ + Lisp_Int0 = 2, + Lisp_Int1 = USE_LSB_TAG ? 6 : 3, + + /* String. XSTRING (object) points to a struct Lisp_String. + The length of the string, and its contents, are stored therein. */ + Lisp_String = 4, + + /* Vector of Lisp objects, or something resembling it. + XVECTOR (object) points to a struct Lisp_Vector, which contains + the size and contents. The size field also contains the type + information, if it's not a real vector object. */ + Lisp_Vectorlike = 5, + + /* Cons. XCONS (object) points to a struct Lisp_Cons. */ + Lisp_Cons = USE_LSB_TAG ? 3 : 6, + + Lisp_Float = 7 + }; + +/* This is the set of data types that share a common structure. + The first member of the structure is a type code from this set. + The enum values are arbitrary, but we'll use large numbers to make it + more likely that we'll spot the error if a random word in memory is + mistakenly interpreted as a Lisp_Misc. */ +enum Lisp_Misc_Type + { + Lisp_Misc_Free = 0x5eab, + Lisp_Misc_Marker, + Lisp_Misc_Overlay, + Lisp_Misc_Save_Value, + Lisp_Misc_Finalizer, + /* Currently floats are not a misc type, + but let's define this in case we want to change that. */ + Lisp_Misc_Float, + /* This is not a type code. It is for range checking. */ + Lisp_Misc_Limit + }; + +/* These are the types of forwarding objects used in the value slot + of symbols for special built-in variables whose value is stored in + C variables. */ +enum Lisp_Fwd_Type + { + Lisp_Fwd_Int, /* Fwd to a C `int' variable. */ + Lisp_Fwd_Bool, /* Fwd to a C boolean var. */ + Lisp_Fwd_Obj, /* Fwd to a C Lisp_Object variable. */ + Lisp_Fwd_Buffer_Obj, /* Fwd to a Lisp_Object field of buffers. */ + Lisp_Fwd_Kboard_Obj /* Fwd to a Lisp_Object field of kboards. */ + }; + +/* If you want to define a new Lisp data type, here are some + instructions. See the thread at + http://lists.gnu.org/archive/html/emacs-devel/2012-10/msg00561.html + for more info. + + First, there are already a couple of Lisp types that can be used if + your new type does not need to be exposed to Lisp programs nor + displayed to users. These are Lisp_Save_Value, a Lisp_Misc + subtype; and PVEC_OTHER, a kind of vectorlike object. The former + is suitable for temporarily stashing away pointers and integers in + a Lisp object. The latter is useful for vector-like Lisp objects + that need to be used as part of other objects, but which are never + shown to users or Lisp code (search for PVEC_OTHER in xterm.c for + an example). + + These two types don't look pretty when printed, so they are + unsuitable for Lisp objects that can be exposed to users. + + To define a new data type, add one more Lisp_Misc subtype or one + more pseudovector subtype. Pseudovectors are more suitable for + objects with several slots that need to support fast random access, + while Lisp_Misc types are for everything else. A pseudovector object + provides one or more slots for Lisp objects, followed by struct + members that are accessible only from C. A Lisp_Misc object is a + wrapper for a C struct that can contain anything you like. + + Explicit freeing is discouraged for Lisp objects in general. But if + you really need to exploit this, use Lisp_Misc (check free_misc in + alloc.c to see why). There is no way to free a vectorlike object. + + To add a new pseudovector type, extend the pvec_type enumeration; + to add a new Lisp_Misc, extend the Lisp_Misc_Type enumeration. + + For a Lisp_Misc, you will also need to add your entry to union + Lisp_Misc (but make sure the first word has the same structure as + the others, starting with a 16-bit member of the Lisp_Misc_Type + enumeration and a 1-bit GC markbit) and make sure the overall size + of the union is not increased by your addition. + + For a new pseudovector, it's highly desirable to limit the size + of your data type by VBLOCK_BYTES_MAX bytes (defined in alloc.c). + Otherwise you will need to change sweep_vectors (also in alloc.c). + + Then you will need to add switch branches in print.c (in + print_object, to print your object, and possibly also in + print_preprocess) and to alloc.c, to mark your object (in + mark_object) and to free it (in gc_sweep). The latter is also the + right place to call any code specific to your data type that needs + to run when the object is recycled -- e.g., free any additional + resources allocated for it that are not Lisp objects. You can even + make a pointer to the function that frees the resources a slot in + your object -- this way, the same object could be used to represent + several disparate C structures. */ + +#ifdef CHECK_LISP_OBJECT_TYPE + +typedef struct { EMACS_INT i; } Lisp_Object; + +#define LISP_INITIALLY(i) {i} + +#undef CHECK_LISP_OBJECT_TYPE +enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE = true }; +#else /* CHECK_LISP_OBJECT_TYPE */ + +/* If a struct type is not wanted, define Lisp_Object as just a number. */ + +typedef EMACS_INT Lisp_Object; +#define LISP_INITIALLY(i) (i) +enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE = false }; +#endif /* CHECK_LISP_OBJECT_TYPE */ + +#define LISP_INITIALLY_ZERO LISP_INITIALLY (0) + +/* Forward declarations. */ + +/* Defined in this file. */ +union Lisp_Fwd; +INLINE bool BOOL_VECTOR_P (Lisp_Object); +INLINE bool BUFFER_OBJFWDP (union Lisp_Fwd *); +INLINE bool BUFFERP (Lisp_Object); +INLINE bool CHAR_TABLE_P (Lisp_Object); +INLINE Lisp_Object CHAR_TABLE_REF_ASCII (Lisp_Object, ptrdiff_t); +INLINE bool (CONSP) (Lisp_Object); +INLINE bool (FLOATP) (Lisp_Object); +INLINE bool functionp (Lisp_Object); +INLINE bool (INTEGERP) (Lisp_Object); +INLINE bool (MARKERP) (Lisp_Object); +INLINE bool (MISCP) (Lisp_Object); +INLINE bool (NILP) (Lisp_Object); +INLINE bool OVERLAYP (Lisp_Object); +INLINE bool PROCESSP (Lisp_Object); +INLINE bool PSEUDOVECTORP (Lisp_Object, int); +INLINE bool SAVE_VALUEP (Lisp_Object); +INLINE bool FINALIZERP (Lisp_Object); +INLINE void set_sub_char_table_contents (Lisp_Object, ptrdiff_t, + Lisp_Object); +INLINE bool STRINGP (Lisp_Object); +INLINE bool SUB_CHAR_TABLE_P (Lisp_Object); +INLINE bool SUBRP (Lisp_Object); +INLINE bool (SYMBOLP) (Lisp_Object); +INLINE bool (VECTORLIKEP) (Lisp_Object); +INLINE bool WINDOWP (Lisp_Object); +INLINE bool TERMINALP (Lisp_Object); +INLINE struct Lisp_Save_Value *XSAVE_VALUE (Lisp_Object); +INLINE struct Lisp_Finalizer *XFINALIZER (Lisp_Object); +INLINE struct Lisp_Symbol *(XSYMBOL) (Lisp_Object); +INLINE void *(XUNTAG) (Lisp_Object, int); + +/* Defined in chartab.c. */ +extern Lisp_Object char_table_ref (Lisp_Object, int); +extern void char_table_set (Lisp_Object, int, Lisp_Object); + +/* Defined in data.c. */ +extern _Noreturn Lisp_Object wrong_type_argument (Lisp_Object, Lisp_Object); +extern _Noreturn void wrong_choice (Lisp_Object, Lisp_Object); + +/* Defined in emacs.c. */ +extern bool might_dump; +/* True means Emacs has already been initialized. + Used during startup to detect startup of dumped Emacs. */ +extern bool initialized; + +/* Defined in floatfns.c. */ +extern double extract_float (Lisp_Object); + + +/* Interned state of a symbol. */ + +enum symbol_interned +{ + SYMBOL_UNINTERNED = 0, + SYMBOL_INTERNED = 1, + SYMBOL_INTERNED_IN_INITIAL_OBARRAY = 2 +}; + +enum symbol_redirect +{ + SYMBOL_PLAINVAL = 4, + SYMBOL_VARALIAS = 1, + SYMBOL_LOCALIZED = 2, + SYMBOL_FORWARDED = 3 +}; + +struct Lisp_Symbol +{ + bool_bf gcmarkbit : 1; + + /* Indicates where the value can be found: + 0 : it's a plain var, the value is in the `value' field. + 1 : it's a varalias, the value is really in the `alias' symbol. + 2 : it's a localized var, the value is in the `blv' object. + 3 : it's a forwarding variable, the value is in `forward'. */ + ENUM_BF (symbol_redirect) redirect : 3; + + /* Non-zero means symbol is constant, i.e. changing its value + should signal an error. If the value is 3, then the var + can be changed, but only by `defconst'. */ + unsigned constant : 2; + + /* Interned state of the symbol. This is an enumerator from + enum symbol_interned. */ + unsigned interned : 2; + + /* True means that this variable has been explicitly declared + special (with `defvar' etc), and shouldn't be lexically bound. */ + bool_bf declared_special : 1; + + /* True if pointed to from purespace and hence can't be GC'd. */ + bool_bf pinned : 1; + + /* The symbol's name, as a Lisp string. */ + Lisp_Object name; + + /* Value of the symbol or Qunbound if unbound. Which alternative of the + union is used depends on the `redirect' field above. */ + union { + Lisp_Object value; + struct Lisp_Symbol *alias; + struct Lisp_Buffer_Local_Value *blv; + union Lisp_Fwd *fwd; + } val; + + /* Function value of the symbol or Qnil if not fboundp. */ + Lisp_Object function; + + /* The symbol's property list. */ + Lisp_Object plist; + + /* Next symbol in obarray bucket, if the symbol is interned. */ + struct Lisp_Symbol *next; +}; + +/* Declare a Lisp-callable function. The MAXARGS parameter has the same + meaning as in the DEFUN macro, and is used to construct a prototype. */ +/* We can use the same trick as in the DEFUN macro to generate the + appropriate prototype. */ +#define EXFUN(fnname, maxargs) \ + extern Lisp_Object fnname DEFUN_ARGS_ ## maxargs + +/* Note that the weird token-substitution semantics of ANSI C makes + this work for MANY and UNEVALLED. */ +#define DEFUN_ARGS_MANY (ptrdiff_t, Lisp_Object *) +#define DEFUN_ARGS_UNEVALLED (Lisp_Object) +#define DEFUN_ARGS_0 (void) +#define DEFUN_ARGS_1 (Lisp_Object) +#define DEFUN_ARGS_2 (Lisp_Object, Lisp_Object) +#define DEFUN_ARGS_3 (Lisp_Object, Lisp_Object, Lisp_Object) +#define DEFUN_ARGS_4 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object) +#define DEFUN_ARGS_5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \ + Lisp_Object) +#define DEFUN_ARGS_6 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \ + Lisp_Object, Lisp_Object) +#define DEFUN_ARGS_7 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \ + Lisp_Object, Lisp_Object, Lisp_Object) +#define DEFUN_ARGS_8 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \ + Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object) + +/* Yield an integer that contains TAG along with PTR. */ +#define TAG_PTR(tag, ptr) \ + ((USE_LSB_TAG ? (tag) : (EMACS_UINT) (tag) << VALBITS) + (uintptr_t) (ptr)) + +/* Yield an integer that contains a symbol tag along with OFFSET. + OFFSET should be the offset in bytes from 'lispsym' to the symbol. */ +#define TAG_SYMOFFSET(offset) \ + TAG_PTR (Lisp_Symbol, \ + ((uintptr_t) (offset) >> (USE_LSB_TAG ? 0 : GCTYPEBITS))) + +/* XLI_BUILTIN_LISPSYM (iQwhatever) is equivalent to + XLI (builtin_lisp_symbol (Qwhatever)), + except the former expands to an integer constant expression. */ +#define XLI_BUILTIN_LISPSYM(iname) TAG_SYMOFFSET ((iname) * sizeof *lispsym) + +/* Declare extern constants for Lisp symbols. These can be helpful + when using a debugger like GDB, on older platforms where the debug + format does not represent C macros. */ +#define DEFINE_LISP_SYMBOL(name) \ + DEFINE_GDB_SYMBOL_BEGIN (Lisp_Object, name) \ + DEFINE_GDB_SYMBOL_END (LISP_INITIALLY (XLI_BUILTIN_LISPSYM (i##name))) + +/* By default, define macros for Qt, etc., as this leads to a bit + better performance in the core Emacs interpreter. A plugin can + define DEFINE_NON_NIL_Q_SYMBOL_MACROS to be false, to be portable to + other Emacs instances that assign different values to Qt, etc. */ +#ifndef DEFINE_NON_NIL_Q_SYMBOL_MACROS +# define DEFINE_NON_NIL_Q_SYMBOL_MACROS true +#endif + +#include "globals.h" + +/* Convert a Lisp_Object to the corresponding EMACS_INT and vice versa. + At the machine level, these operations are no-ops. */ +LISP_MACRO_DEFUN (XLI, EMACS_INT, (Lisp_Object o), (o)) +LISP_MACRO_DEFUN (XIL, Lisp_Object, (EMACS_INT i), (i)) + +/* In the size word of a vector, this bit means the vector has been marked. */ + +DEFINE_GDB_SYMBOL_BEGIN (ptrdiff_t, ARRAY_MARK_FLAG) +# define ARRAY_MARK_FLAG PTRDIFF_MIN +DEFINE_GDB_SYMBOL_END (ARRAY_MARK_FLAG) + +/* In the size word of a struct Lisp_Vector, this bit means it's really + some other vector-like object. */ +DEFINE_GDB_SYMBOL_BEGIN (ptrdiff_t, PSEUDOVECTOR_FLAG) +# define PSEUDOVECTOR_FLAG (PTRDIFF_MAX - PTRDIFF_MAX / 2) +DEFINE_GDB_SYMBOL_END (PSEUDOVECTOR_FLAG) + +/* In a pseudovector, the size field actually contains a word with one + PSEUDOVECTOR_FLAG bit set, and one of the following values extracted + with PVEC_TYPE_MASK to indicate the actual type. */ +enum pvec_type +{ + PVEC_NORMAL_VECTOR, + PVEC_FREE, + PVEC_PROCESS, + PVEC_FRAME, + PVEC_WINDOW, + PVEC_BOOL_VECTOR, + PVEC_BUFFER, + PVEC_HASH_TABLE, + PVEC_TERMINAL, + PVEC_WINDOW_CONFIGURATION, + PVEC_SUBR, + PVEC_OTHER, + /* These should be last, check internal_equal to see why. */ + PVEC_COMPILED, + PVEC_CHAR_TABLE, + PVEC_SUB_CHAR_TABLE, + PVEC_FONT /* Should be last because it's used for range checking. */ +}; + +enum More_Lisp_Bits + { + /* For convenience, we also store the number of elements in these bits. + Note that this size is not necessarily the memory-footprint size, but + only the number of Lisp_Object fields (that need to be traced by GC). + The distinction is used, e.g., by Lisp_Process, which places extra + non-Lisp_Object fields at the end of the structure. */ + PSEUDOVECTOR_SIZE_BITS = 12, + PSEUDOVECTOR_SIZE_MASK = (1 << PSEUDOVECTOR_SIZE_BITS) - 1, + + /* To calculate the memory footprint of the pseudovector, it's useful + to store the size of non-Lisp area in word_size units here. */ + PSEUDOVECTOR_REST_BITS = 12, + PSEUDOVECTOR_REST_MASK = (((1 << PSEUDOVECTOR_REST_BITS) - 1) + << PSEUDOVECTOR_SIZE_BITS), + + /* Used to extract pseudovector subtype information. */ + PSEUDOVECTOR_AREA_BITS = PSEUDOVECTOR_SIZE_BITS + PSEUDOVECTOR_REST_BITS, + PVEC_TYPE_MASK = 0x3f << PSEUDOVECTOR_AREA_BITS + }; + +/* These functions extract various sorts of values from a Lisp_Object. + For example, if tem is a Lisp_Object whose type is Lisp_Cons, + XCONS (tem) is the struct Lisp_Cons * pointing to the memory for + that cons. */ + +/* Mask for the value (as opposed to the type bits) of a Lisp object. */ +DEFINE_GDB_SYMBOL_BEGIN (EMACS_INT, VALMASK) +# define VALMASK (USE_LSB_TAG ? - (1 << GCTYPEBITS) : VAL_MAX) +DEFINE_GDB_SYMBOL_END (VALMASK) + +/* Largest and smallest representable fixnum values. These are the C + values. They are macros for use in static initializers. */ +#define MOST_POSITIVE_FIXNUM (EMACS_INT_MAX >> INTTYPEBITS) +#define MOST_NEGATIVE_FIXNUM (-1 - MOST_POSITIVE_FIXNUM) + +#if USE_LSB_TAG + +LISP_MACRO_DEFUN (make_number, Lisp_Object, (EMACS_INT n), (n)) +LISP_MACRO_DEFUN (XINT, EMACS_INT, (Lisp_Object a), (a)) +LISP_MACRO_DEFUN (XFASTINT, EMACS_INT, (Lisp_Object a), (a)) +LISP_MACRO_DEFUN (XSYMBOL, struct Lisp_Symbol *, (Lisp_Object a), (a)) +LISP_MACRO_DEFUN (XTYPE, enum Lisp_Type, (Lisp_Object a), (a)) +LISP_MACRO_DEFUN (XUNTAG, void *, (Lisp_Object a, int type), (a, type)) + +#else /* ! USE_LSB_TAG */ + +/* Although compiled only if ! USE_LSB_TAG, the following functions + also work when USE_LSB_TAG; this is to aid future maintenance when + the lisp_h_* macros are eventually removed. */ + +/* Make a Lisp integer representing the value of the low order + bits of N. */ +INLINE Lisp_Object +make_number (EMACS_INT n) +{ + EMACS_INT int0 = Lisp_Int0; + if (USE_LSB_TAG) + { + EMACS_UINT u = n; + n = u << INTTYPEBITS; + n += int0; + } + else + { + n &= INTMASK; + n += (int0 << VALBITS); + } + return XIL (n); +} + +/* Extract A's value as a signed integer. */ +INLINE EMACS_INT +XINT (Lisp_Object a) +{ + EMACS_INT i = XLI (a); + if (! USE_LSB_TAG) + { + EMACS_UINT u = i; + i = u << INTTYPEBITS; + } + return i >> INTTYPEBITS; +} + +/* Like XINT (A), but may be faster. A must be nonnegative. + If ! USE_LSB_TAG, this takes advantage of the fact that Lisp + integers have zero-bits in their tags. */ +INLINE EMACS_INT +XFASTINT (Lisp_Object a) +{ + EMACS_INT int0 = Lisp_Int0; + EMACS_INT n = USE_LSB_TAG ? XINT (a) : XLI (a) - (int0 << VALBITS); + eassert (0 <= n); + return n; +} + +/* Extract A's value as a symbol. */ +INLINE struct Lisp_Symbol * +XSYMBOL (Lisp_Object a) +{ + uintptr_t i = (uintptr_t) XUNTAG (a, Lisp_Symbol); + if (! USE_LSB_TAG) + i <<= GCTYPEBITS; + void *p = (char *) lispsym + i; + return p; +} + +/* Extract A's type. */ +INLINE enum Lisp_Type +XTYPE (Lisp_Object a) +{ + EMACS_UINT i = XLI (a); + return USE_LSB_TAG ? i & ~VALMASK : i >> VALBITS; +} + +/* Extract A's pointer value, assuming A's type is TYPE. */ +INLINE void * +XUNTAG (Lisp_Object a, int type) +{ + intptr_t i = USE_LSB_TAG ? XLI (a) - type : XLI (a) & VALMASK; + return (void *) i; +} + +#endif /* ! USE_LSB_TAG */ + +/* Extract the pointer hidden within A. */ +LISP_MACRO_DEFUN (XPNTR, void *, (Lisp_Object a), (a)) + +/* Extract A's value as an unsigned integer. */ +INLINE EMACS_UINT +XUINT (Lisp_Object a) +{ + EMACS_UINT i = XLI (a); + return USE_LSB_TAG ? i >> INTTYPEBITS : i & INTMASK; +} + +/* Return A's (Lisp-integer sized) hash. Happens to be like XUINT + right now, but XUINT should only be applied to objects we know are + integers. */ +LISP_MACRO_DEFUN (XHASH, EMACS_INT, (Lisp_Object a), (a)) + +/* Like make_number (N), but may be faster. N must be in nonnegative range. */ +INLINE Lisp_Object +make_natnum (EMACS_INT n) +{ + eassert (0 <= n && n <= MOST_POSITIVE_FIXNUM); + EMACS_INT int0 = Lisp_Int0; + return USE_LSB_TAG ? make_number (n) : XIL (n + (int0 << VALBITS)); +} + +/* Return true if X and Y are the same object. */ +LISP_MACRO_DEFUN (EQ, bool, (Lisp_Object x, Lisp_Object y), (x, y)) + +/* Value is true if I doesn't fit into a Lisp fixnum. It is + written this way so that it also works if I is of unsigned + type or if I is a NaN. */ + +#define FIXNUM_OVERFLOW_P(i) \ + (! ((0 <= (i) || MOST_NEGATIVE_FIXNUM <= (i)) && (i) <= MOST_POSITIVE_FIXNUM)) + +INLINE ptrdiff_t +clip_to_bounds (ptrdiff_t lower, EMACS_INT num, ptrdiff_t upper) +{ + return num < lower ? lower : num <= upper ? num : upper; +} + + +/* Extract a value or address from a Lisp_Object. */ + +LISP_MACRO_DEFUN (XCONS, struct Lisp_Cons *, (Lisp_Object a), (a)) + +INLINE struct Lisp_Vector * +XVECTOR (Lisp_Object a) +{ + eassert (VECTORLIKEP (a)); + return XUNTAG (a, Lisp_Vectorlike); +} + +INLINE struct Lisp_String * +XSTRING (Lisp_Object a) +{ + eassert (STRINGP (a)); + return XUNTAG (a, Lisp_String); +} + +/* The index of the C-defined Lisp symbol SYM. + This can be used in a static initializer. */ +#define SYMBOL_INDEX(sym) i##sym + +INLINE struct Lisp_Float * +XFLOAT (Lisp_Object a) +{ + eassert (FLOATP (a)); + return XUNTAG (a, Lisp_Float); +} + +/* Pseudovector types. */ + +INLINE struct Lisp_Process * +XPROCESS (Lisp_Object a) +{ + eassert (PROCESSP (a)); + return XUNTAG (a, Lisp_Vectorlike); +} + +INLINE struct window * +XWINDOW (Lisp_Object a) +{ + eassert (WINDOWP (a)); + return XUNTAG (a, Lisp_Vectorlike); +} + +INLINE struct terminal * +XTERMINAL (Lisp_Object a) +{ + eassert (TERMINALP (a)); + return XUNTAG (a, Lisp_Vectorlike); +} + +INLINE struct Lisp_Subr * +XSUBR (Lisp_Object a) +{ + eassert (SUBRP (a)); + return XUNTAG (a, Lisp_Vectorlike); +} + +INLINE struct buffer * +XBUFFER (Lisp_Object a) +{ + eassert (BUFFERP (a)); + return XUNTAG (a, Lisp_Vectorlike); +} + +INLINE struct Lisp_Char_Table * +XCHAR_TABLE (Lisp_Object a) +{ + eassert (CHAR_TABLE_P (a)); + return XUNTAG (a, Lisp_Vectorlike); +} + +INLINE struct Lisp_Sub_Char_Table * +XSUB_CHAR_TABLE (Lisp_Object a) +{ + eassert (SUB_CHAR_TABLE_P (a)); + return XUNTAG (a, Lisp_Vectorlike); +} + +INLINE struct Lisp_Bool_Vector * +XBOOL_VECTOR (Lisp_Object a) +{ + eassert (BOOL_VECTOR_P (a)); + return XUNTAG (a, Lisp_Vectorlike); +} + +/* Construct a Lisp_Object from a value or address. */ + +INLINE Lisp_Object +make_lisp_ptr (void *ptr, enum Lisp_Type type) +{ + Lisp_Object a = XIL (TAG_PTR (type, ptr)); + eassert (XTYPE (a) == type && XUNTAG (a, type) == ptr); + return a; +} + +INLINE Lisp_Object +make_lisp_symbol (struct Lisp_Symbol *sym) +{ + Lisp_Object a = XIL (TAG_SYMOFFSET ((char *) sym - (char *) lispsym)); + eassert (XSYMBOL (a) == sym); + return a; +} + +INLINE Lisp_Object +builtin_lisp_symbol (int index) +{ + return make_lisp_symbol (lispsym + index); +} + +#define XSETINT(a, b) ((a) = make_number (b)) +#define XSETFASTINT(a, b) ((a) = make_natnum (b)) +#define XSETCONS(a, b) ((a) = make_lisp_ptr (b, Lisp_Cons)) +#define XSETVECTOR(a, b) ((a) = make_lisp_ptr (b, Lisp_Vectorlike)) +#define XSETSTRING(a, b) ((a) = make_lisp_ptr (b, Lisp_String)) +#define XSETSYMBOL(a, b) ((a) = make_lisp_symbol (b)) +#define XSETFLOAT(a, b) ((a) = make_lisp_ptr (b, Lisp_Float)) +#define XSETMISC(a, b) ((a) = make_lisp_ptr (b, Lisp_Misc)) + +/* Pseudovector types. */ + +#define XSETPVECTYPE(v, code) \ + ((v)->header.size |= PSEUDOVECTOR_FLAG | ((code) << PSEUDOVECTOR_AREA_BITS)) +#define XSETPVECTYPESIZE(v, code, lispsize, restsize) \ + ((v)->header.size = (PSEUDOVECTOR_FLAG \ + | ((code) << PSEUDOVECTOR_AREA_BITS) \ + | ((restsize) << PSEUDOVECTOR_SIZE_BITS) \ + | (lispsize))) + +/* The cast to struct vectorlike_header * avoids aliasing issues. */ +#define XSETPSEUDOVECTOR(a, b, code) \ + XSETTYPED_PSEUDOVECTOR (a, b, \ + (((struct vectorlike_header *) \ + XUNTAG (a, Lisp_Vectorlike)) \ + ->size), \ + code) +#define XSETTYPED_PSEUDOVECTOR(a, b, size, code) \ + (XSETVECTOR (a, b), \ + eassert ((size & (PSEUDOVECTOR_FLAG | PVEC_TYPE_MASK)) \ + == (PSEUDOVECTOR_FLAG | (code << PSEUDOVECTOR_AREA_BITS)))) + +#define XSETWINDOW_CONFIGURATION(a, b) \ + (XSETPSEUDOVECTOR (a, b, PVEC_WINDOW_CONFIGURATION)) +#define XSETPROCESS(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_PROCESS)) +#define XSETWINDOW(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_WINDOW)) +#define XSETTERMINAL(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_TERMINAL)) +#define XSETSUBR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_SUBR)) +#define XSETCOMPILED(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_COMPILED)) +#define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BUFFER)) +#define XSETCHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_CHAR_TABLE)) +#define XSETBOOL_VECTOR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BOOL_VECTOR)) +#define XSETSUB_CHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_SUB_CHAR_TABLE)) + +/* Efficiently convert a pointer to a Lisp object and back. The + pointer is represented as a Lisp integer, so the garbage collector + does not know about it. The pointer should not have both Lisp_Int1 + bits set, which makes this conversion inherently unportable. */ + +INLINE void * +XINTPTR (Lisp_Object a) +{ + return XUNTAG (a, Lisp_Int0); +} + +INLINE Lisp_Object +make_pointer_integer (void *p) +{ + Lisp_Object a = XIL (TAG_PTR (Lisp_Int0, p)); + eassert (INTEGERP (a) && XINTPTR (a) == p); + return a; +} + +/* Type checking. */ + +LISP_MACRO_DEFUN_VOID (CHECK_TYPE, + (int ok, Lisp_Object predicate, Lisp_Object x), + (ok, predicate, x)) + +/* See the macros in intervals.h. */ + +typedef struct interval *INTERVAL; + +struct GCALIGNED Lisp_Cons + { + /* Car of this cons cell. */ + Lisp_Object car; + + union + { + /* Cdr of this cons cell. */ + Lisp_Object cdr; + + /* Used to chain conses on a free list. */ + struct Lisp_Cons *chain; + } u; + }; + +/* Take the car or cdr of something known to be a cons cell. */ +/* The _addr functions shouldn't be used outside of the minimal set + of code that has to know what a cons cell looks like. Other code not + part of the basic lisp implementation should assume that the car and cdr + fields are not accessible. (What if we want to switch to + a copying collector someday? Cached cons cell field addresses may be + invalidated at arbitrary points.) */ +INLINE Lisp_Object * +xcar_addr (Lisp_Object c) +{ + return &XCONS (c)->car; +} +INLINE Lisp_Object * +xcdr_addr (Lisp_Object c) +{ + return &XCONS (c)->u.cdr; +} + +/* Use these from normal code. */ +LISP_MACRO_DEFUN (XCAR, Lisp_Object, (Lisp_Object c), (c)) +LISP_MACRO_DEFUN (XCDR, Lisp_Object, (Lisp_Object c), (c)) + +/* Use these to set the fields of a cons cell. + + Note that both arguments may refer to the same object, so 'n' + should not be read after 'c' is first modified. */ +INLINE void +XSETCAR (Lisp_Object c, Lisp_Object n) +{ + *xcar_addr (c) = n; +} +INLINE void +XSETCDR (Lisp_Object c, Lisp_Object n) +{ + *xcdr_addr (c) = n; +} + +/* Take the car or cdr of something whose type is not known. */ +INLINE Lisp_Object +CAR (Lisp_Object c) +{ + return (CONSP (c) ? XCAR (c) + : NILP (c) ? Qnil + : wrong_type_argument (Qlistp, c)); +} +INLINE Lisp_Object +CDR (Lisp_Object c) +{ + return (CONSP (c) ? XCDR (c) + : NILP (c) ? Qnil + : wrong_type_argument (Qlistp, c)); +} + +/* Take the car or cdr of something whose type is not known. */ +INLINE Lisp_Object +CAR_SAFE (Lisp_Object c) +{ + return CONSP (c) ? XCAR (c) : Qnil; +} +INLINE Lisp_Object +CDR_SAFE (Lisp_Object c) +{ + return CONSP (c) ? XCDR (c) : Qnil; +} + +/* In a string or vector, the sign bit of the `size' is the gc mark bit. */ + +struct GCALIGNED Lisp_String + { + ptrdiff_t size; + ptrdiff_t size_byte; + INTERVAL intervals; /* Text properties in this string. */ + unsigned char *data; + }; + +/* True if STR is a multibyte string. */ +INLINE bool +STRING_MULTIBYTE (Lisp_Object str) +{ + return 0 <= XSTRING (str)->size_byte; +} + +/* An upper bound on the number of bytes in a Lisp string, not + counting the terminating null. This a tight enough bound to + prevent integer overflow errors that would otherwise occur during + string size calculations. A string cannot contain more bytes than + a fixnum can represent, nor can it be so long that C pointer + arithmetic stops working on the string plus its terminating null. + Although the actual size limit (see STRING_BYTES_MAX in alloc.c) + may be a bit smaller than STRING_BYTES_BOUND, calculating it here + would expose alloc.c internal details that we'd rather keep + private. + + This is a macro for use in static initializers. The cast to + ptrdiff_t ensures that the macro is signed. */ +#define STRING_BYTES_BOUND \ + ((ptrdiff_t) min (MOST_POSITIVE_FIXNUM, min (SIZE_MAX, PTRDIFF_MAX) - 1)) + +/* Mark STR as a unibyte string. */ +#define STRING_SET_UNIBYTE(STR) \ + do { \ + if (EQ (STR, empty_multibyte_string)) \ + (STR) = empty_unibyte_string; \ + else \ + XSTRING (STR)->size_byte = -1; \ + } while (false) + +/* Mark STR as a multibyte string. Assure that STR contains only + ASCII characters in advance. */ +#define STRING_SET_MULTIBYTE(STR) \ + do { \ + if (EQ (STR, empty_unibyte_string)) \ + (STR) = empty_multibyte_string; \ + else \ + XSTRING (STR)->size_byte = XSTRING (STR)->size; \ + } while (false) + +/* Convenience functions for dealing with Lisp strings. */ + +INLINE unsigned char * +SDATA (Lisp_Object string) +{ + return XSTRING (string)->data; +} +INLINE char * +SSDATA (Lisp_Object string) +{ + /* Avoid "differ in sign" warnings. */ + return (char *) SDATA (string); +} +INLINE unsigned char +SREF (Lisp_Object string, ptrdiff_t index) +{ + return SDATA (string)[index]; +} +INLINE void +SSET (Lisp_Object string, ptrdiff_t index, unsigned char new) +{ + SDATA (string)[index] = new; +} +INLINE ptrdiff_t +SCHARS (Lisp_Object string) +{ + return XSTRING (string)->size; +} + +#ifdef GC_CHECK_STRING_BYTES +extern ptrdiff_t string_bytes (struct Lisp_String *); +#endif +INLINE ptrdiff_t +STRING_BYTES (struct Lisp_String *s) +{ +#ifdef GC_CHECK_STRING_BYTES + return string_bytes (s); +#else + return s->size_byte < 0 ? s->size : s->size_byte; +#endif +} + +INLINE ptrdiff_t +SBYTES (Lisp_Object string) +{ + return STRING_BYTES (XSTRING (string)); +} +INLINE void +STRING_SET_CHARS (Lisp_Object string, ptrdiff_t newsize) +{ + XSTRING (string)->size = newsize; +} + +/* Header of vector-like objects. This documents the layout constraints on + vectors and pseudovectors (objects of PVEC_xxx subtype). It also prevents + compilers from being fooled by Emacs's type punning: XSETPSEUDOVECTOR + and PSEUDOVECTORP cast their pointers to struct vectorlike_header *, + because when two such pointers potentially alias, a compiler won't + incorrectly reorder loads and stores to their size fields. See + Bug#8546. */ +struct vectorlike_header + { + /* The only field contains various pieces of information: + - The MSB (ARRAY_MARK_FLAG) holds the gcmarkbit. + - The next bit (PSEUDOVECTOR_FLAG) indicates whether this is a plain + vector (0) or a pseudovector (1). + - If PSEUDOVECTOR_FLAG is 0, the rest holds the size (number + of slots) of the vector. + - If PSEUDOVECTOR_FLAG is 1, the rest is subdivided into three fields: + - a) pseudovector subtype held in PVEC_TYPE_MASK field; + - b) number of Lisp_Objects slots at the beginning of the object + held in PSEUDOVECTOR_SIZE_MASK field. These objects are always + traced by the GC; + - c) size of the rest fields held in PSEUDOVECTOR_REST_MASK and + measured in word_size units. Rest fields may also include + Lisp_Objects, but these objects usually needs some special treatment + during GC. + There are some exceptions. For PVEC_FREE, b) is always zero. For + PVEC_BOOL_VECTOR and PVEC_SUBR, both b) and c) are always zero. + Current layout limits the pseudovectors to 63 PVEC_xxx subtypes, + 4095 Lisp_Objects in GC-ed area and 4095 word-sized other slots. */ + ptrdiff_t size; + }; + +/* A regular vector is just a header plus an array of Lisp_Objects. */ + +struct Lisp_Vector + { + struct vectorlike_header header; + Lisp_Object contents[FLEXIBLE_ARRAY_MEMBER]; + }; + +/* C11 prohibits alignof (struct Lisp_Vector), so compute it manually. */ +enum + { + ALIGNOF_STRUCT_LISP_VECTOR + = alignof (union { struct vectorlike_header a; Lisp_Object b; }) + }; + +/* A boolvector is a kind of vectorlike, with contents like a string. */ + +struct Lisp_Bool_Vector + { + /* HEADER.SIZE is the vector's size field. It doesn't have the real size, + just the subtype information. */ + struct vectorlike_header header; + /* This is the size in bits. */ + EMACS_INT size; + /* The actual bits, packed into bytes. + Zeros fill out the last word if needed. + The bits are in little-endian order in the bytes, and + the bytes are in little-endian order in the words. */ + bits_word data[FLEXIBLE_ARRAY_MEMBER]; + }; + +INLINE EMACS_INT +bool_vector_size (Lisp_Object a) +{ + EMACS_INT size = XBOOL_VECTOR (a)->size; + eassume (0 <= size); + return size; +} + +INLINE bits_word * +bool_vector_data (Lisp_Object a) +{ + return XBOOL_VECTOR (a)->data; +} + +INLINE unsigned char * +bool_vector_uchar_data (Lisp_Object a) +{ + return (unsigned char *) bool_vector_data (a); +} + +/* The number of data words and bytes in a bool vector with SIZE bits. */ + +INLINE EMACS_INT +bool_vector_words (EMACS_INT size) +{ + eassume (0 <= size && size <= EMACS_INT_MAX - (BITS_PER_BITS_WORD - 1)); + return (size + BITS_PER_BITS_WORD - 1) / BITS_PER_BITS_WORD; +} + +INLINE EMACS_INT +bool_vector_bytes (EMACS_INT size) +{ + eassume (0 <= size && size <= EMACS_INT_MAX - (BITS_PER_BITS_WORD - 1)); + return (size + BOOL_VECTOR_BITS_PER_CHAR - 1) / BOOL_VECTOR_BITS_PER_CHAR; +} + +/* True if A's Ith bit is set. */ + +INLINE bool +bool_vector_bitref (Lisp_Object a, EMACS_INT i) +{ + eassume (0 <= i && i < bool_vector_size (a)); + return !! (bool_vector_uchar_data (a)[i / BOOL_VECTOR_BITS_PER_CHAR] + & (1 << (i % BOOL_VECTOR_BITS_PER_CHAR))); +} + +INLINE Lisp_Object +bool_vector_ref (Lisp_Object a, EMACS_INT i) +{ + return bool_vector_bitref (a, i) ? Qt : Qnil; +} + +/* Set A's Ith bit to B. */ + +INLINE void +bool_vector_set (Lisp_Object a, EMACS_INT i, bool b) +{ + unsigned char *addr; + + eassume (0 <= i && i < bool_vector_size (a)); + addr = &bool_vector_uchar_data (a)[i / BOOL_VECTOR_BITS_PER_CHAR]; + + if (b) + *addr |= 1 << (i % BOOL_VECTOR_BITS_PER_CHAR); + else + *addr &= ~ (1 << (i % BOOL_VECTOR_BITS_PER_CHAR)); +} + +/* Some handy constants for calculating sizes + and offsets, mostly of vectorlike objects. */ + +enum + { + header_size = offsetof (struct Lisp_Vector, contents), + bool_header_size = offsetof (struct Lisp_Bool_Vector, data), + word_size = sizeof (Lisp_Object) + }; + +/* Conveniences for dealing with Lisp arrays. */ + +INLINE Lisp_Object +AREF (Lisp_Object array, ptrdiff_t idx) +{ + return XVECTOR (array)->contents[idx]; +} + +INLINE Lisp_Object * +aref_addr (Lisp_Object array, ptrdiff_t idx) +{ + return & XVECTOR (array)->contents[idx]; +} + +INLINE ptrdiff_t +ASIZE (Lisp_Object array) +{ + return XVECTOR (array)->header.size; +} + +INLINE void +ASET (Lisp_Object array, ptrdiff_t idx, Lisp_Object val) +{ + eassert (0 <= idx && idx < ASIZE (array)); + XVECTOR (array)->contents[idx] = val; +} + +INLINE void +gc_aset (Lisp_Object array, ptrdiff_t idx, Lisp_Object val) +{ + /* Like ASET, but also can be used in the garbage collector: + sweep_weak_table calls set_hash_key etc. while the table is marked. */ + eassert (0 <= idx && idx < (ASIZE (array) & ~ARRAY_MARK_FLAG)); + XVECTOR (array)->contents[idx] = val; +} + +/* True, since Qnil's representation is zero. Every place in the code + that assumes Qnil is zero should verify (NIL_IS_ZERO), to make it easy + to find such assumptions later if we change Qnil to be nonzero. */ +enum { NIL_IS_ZERO = XLI_BUILTIN_LISPSYM (iQnil) == 0 }; + +/* Clear the object addressed by P, with size NBYTES, so that all its + bytes are zero and all its Lisp values are nil. */ +INLINE void +memclear (void *p, ptrdiff_t nbytes) +{ + eassert (0 <= nbytes); + verify (NIL_IS_ZERO); + /* Since Qnil is zero, memset suffices. */ + memset (p, 0, nbytes); +} + +/* If a struct is made to look like a vector, this macro returns the length + of the shortest vector that would hold that struct. */ + +#define VECSIZE(type) \ + ((sizeof (type) - header_size + word_size - 1) / word_size) + +/* Like VECSIZE, but used when the pseudo-vector has non-Lisp_Object fields + at the end and we need to compute the number of Lisp_Object fields (the + ones that the GC needs to trace). */ + +#define PSEUDOVECSIZE(type, nonlispfield) \ + ((offsetof (type, nonlispfield) - header_size) / word_size) + +/* Compute A OP B, using the unsigned comparison operator OP. A and B + should be integer expressions. This is not the same as + mathematical comparison; for example, UNSIGNED_CMP (0, <, -1) + returns true. For efficiency, prefer plain unsigned comparison if A + and B's sizes both fit (after integer promotion). */ +#define UNSIGNED_CMP(a, op, b) \ + (max (sizeof ((a) + 0), sizeof ((b) + 0)) <= sizeof (unsigned) \ + ? ((a) + (unsigned) 0) op ((b) + (unsigned) 0) \ + : ((a) + (uintmax_t) 0) op ((b) + (uintmax_t) 0)) + +/* True iff C is an ASCII character. */ +#define ASCII_CHAR_P(c) UNSIGNED_CMP (c, <, 0x80) + +/* A char-table is a kind of vectorlike, with contents are like a + vector but with a few other slots. For some purposes, it makes + sense to handle a char-table with type struct Lisp_Vector. An + element of a char table can be any Lisp objects, but if it is a sub + char-table, we treat it a table that contains information of a + specific range of characters. A sub char-table is like a vector but + with two integer fields between the header and Lisp data, which means + that it has to be marked with some precautions (see mark_char_table + in alloc.c). A sub char-table appears only in an element of a char-table, + and there's no way to access it directly from Emacs Lisp program. */ + +enum CHARTAB_SIZE_BITS + { + CHARTAB_SIZE_BITS_0 = 6, + CHARTAB_SIZE_BITS_1 = 4, + CHARTAB_SIZE_BITS_2 = 5, + CHARTAB_SIZE_BITS_3 = 7 + }; + +extern const int chartab_size[4]; + +struct Lisp_Char_Table + { + /* HEADER.SIZE is the vector's size field, which also holds the + pseudovector type information. It holds the size, too. + The size counts the defalt, parent, purpose, ascii, + contents, and extras slots. */ + struct vectorlike_header header; + + /* This holds a default value, + which is used whenever the value for a specific character is nil. */ + Lisp_Object defalt; + + /* This points to another char table, which we inherit from when the + value for a specific character is nil. The `defalt' slot takes + precedence over this. */ + Lisp_Object parent; + + /* This is a symbol which says what kind of use this char-table is + meant for. */ + Lisp_Object purpose; + + /* The bottom sub char-table for characters of the range 0..127. It + is nil if none of ASCII character has a specific value. */ + Lisp_Object ascii; + + Lisp_Object contents[(1 << CHARTAB_SIZE_BITS_0)]; + + /* These hold additional data. It is a vector. */ + Lisp_Object extras[FLEXIBLE_ARRAY_MEMBER]; + }; + +struct Lisp_Sub_Char_Table + { + /* HEADER.SIZE is the vector's size field, which also holds the + pseudovector type information. It holds the size, too. */ + struct vectorlike_header header; + + /* Depth of this sub char-table. It should be 1, 2, or 3. A sub + char-table of depth 1 contains 16 elements, and each element + covers 4096 (128*32) characters. A sub char-table of depth 2 + contains 32 elements, and each element covers 128 characters. A + sub char-table of depth 3 contains 128 elements, and each element + is for one character. */ + int depth; + + /* Minimum character covered by the sub char-table. */ + int min_char; + + /* Use set_sub_char_table_contents to set this. */ + Lisp_Object contents[FLEXIBLE_ARRAY_MEMBER]; + }; + +INLINE Lisp_Object +CHAR_TABLE_REF_ASCII (Lisp_Object ct, ptrdiff_t idx) +{ + struct Lisp_Char_Table *tbl = NULL; + Lisp_Object val; + do + { + tbl = tbl ? XCHAR_TABLE (tbl->parent) : XCHAR_TABLE (ct); + val = (! SUB_CHAR_TABLE_P (tbl->ascii) ? tbl->ascii + : XSUB_CHAR_TABLE (tbl->ascii)->contents[idx]); + if (NILP (val)) + val = tbl->defalt; + } + while (NILP (val) && ! NILP (tbl->parent)); + + return val; +} + +/* Almost equivalent to Faref (CT, IDX) with optimization for ASCII + characters. Do not check validity of CT. */ +INLINE Lisp_Object +CHAR_TABLE_REF (Lisp_Object ct, int idx) +{ + return (ASCII_CHAR_P (idx) + ? CHAR_TABLE_REF_ASCII (ct, idx) + : char_table_ref (ct, idx)); +} + +/* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and + 8-bit European characters. Do not check validity of CT. */ +INLINE void +CHAR_TABLE_SET (Lisp_Object ct, int idx, Lisp_Object val) +{ + if (ASCII_CHAR_P (idx) && SUB_CHAR_TABLE_P (XCHAR_TABLE (ct)->ascii)) + set_sub_char_table_contents (XCHAR_TABLE (ct)->ascii, idx, val); + else + char_table_set (ct, idx, val); +} + +/* This structure describes a built-in function. + It is generated by the DEFUN macro only. + defsubr makes it into a Lisp object. */ + +struct Lisp_Subr + { + struct vectorlike_header header; + union { + Lisp_Object (*a0) (void); + Lisp_Object (*a1) (Lisp_Object); + Lisp_Object (*a2) (Lisp_Object, Lisp_Object); + Lisp_Object (*a3) (Lisp_Object, Lisp_Object, Lisp_Object); + Lisp_Object (*a4) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); + Lisp_Object (*a5) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); + Lisp_Object (*a6) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); + Lisp_Object (*a7) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); + Lisp_Object (*a8) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); + Lisp_Object (*aUNEVALLED) (Lisp_Object args); + Lisp_Object (*aMANY) (ptrdiff_t, Lisp_Object *); + } function; + short min_args, max_args; + const char *symbol_name; + const char *intspec; + const char *doc; + }; + +enum char_table_specials + { + /* This is the number of slots that every char table must have. This + counts the ordinary slots and the top, defalt, parent, and purpose + slots. */ + CHAR_TABLE_STANDARD_SLOTS = PSEUDOVECSIZE (struct Lisp_Char_Table, extras), + + /* This is an index of first Lisp_Object field in Lisp_Sub_Char_Table + when the latter is treated as an ordinary Lisp_Vector. */ + SUB_CHAR_TABLE_OFFSET = PSEUDOVECSIZE (struct Lisp_Sub_Char_Table, contents) + }; + +/* Return the number of "extra" slots in the char table CT. */ + +INLINE int +CHAR_TABLE_EXTRA_SLOTS (struct Lisp_Char_Table *ct) +{ + return ((ct->header.size & PSEUDOVECTOR_SIZE_MASK) + - CHAR_TABLE_STANDARD_SLOTS); +} + +/* Make sure that sub char-table contents slot is where we think it is. */ +verify (offsetof (struct Lisp_Sub_Char_Table, contents) + == offsetof (struct Lisp_Vector, contents[SUB_CHAR_TABLE_OFFSET])); + +/*********************************************************************** + Symbols + ***********************************************************************/ + +/* Value is name of symbol. */ + +LISP_MACRO_DEFUN (SYMBOL_VAL, Lisp_Object, (struct Lisp_Symbol *sym), (sym)) + +INLINE struct Lisp_Symbol * +SYMBOL_ALIAS (struct Lisp_Symbol *sym) +{ + eassert (sym->redirect == SYMBOL_VARALIAS); + return sym->val.alias; +} +INLINE struct Lisp_Buffer_Local_Value * +SYMBOL_BLV (struct Lisp_Symbol *sym) +{ + eassert (sym->redirect == SYMBOL_LOCALIZED); + return sym->val.blv; +} +INLINE union Lisp_Fwd * +SYMBOL_FWD (struct Lisp_Symbol *sym) +{ + eassert (sym->redirect == SYMBOL_FORWARDED); + return sym->val.fwd; +} + +LISP_MACRO_DEFUN_VOID (SET_SYMBOL_VAL, + (struct Lisp_Symbol *sym, Lisp_Object v), (sym, v)) + +INLINE void +SET_SYMBOL_ALIAS (struct Lisp_Symbol *sym, struct Lisp_Symbol *v) +{ + eassert (sym->redirect == SYMBOL_VARALIAS); + sym->val.alias = v; +} +INLINE void +SET_SYMBOL_BLV (struct Lisp_Symbol *sym, struct Lisp_Buffer_Local_Value *v) +{ + eassert (sym->redirect == SYMBOL_LOCALIZED); + sym->val.blv = v; +} +INLINE void +SET_SYMBOL_FWD (struct Lisp_Symbol *sym, union Lisp_Fwd *v) +{ + eassert (sym->redirect == SYMBOL_FORWARDED); + sym->val.fwd = v; +} + +INLINE Lisp_Object +SYMBOL_NAME (Lisp_Object sym) +{ + return XSYMBOL (sym)->name; +} + +/* Value is true if SYM is an interned symbol. */ + +INLINE bool +SYMBOL_INTERNED_P (Lisp_Object sym) +{ + return XSYMBOL (sym)->interned != SYMBOL_UNINTERNED; +} + +/* Value is true if SYM is interned in initial_obarray. */ + +INLINE bool +SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (Lisp_Object sym) +{ + return XSYMBOL (sym)->interned == SYMBOL_INTERNED_IN_INITIAL_OBARRAY; +} + +/* Value is non-zero if symbol is considered a constant, i.e. its + value cannot be changed (there is an exception for keyword symbols, + whose value can be set to the keyword symbol itself). */ + +LISP_MACRO_DEFUN (SYMBOL_CONSTANT_P, int, (Lisp_Object sym), (sym)) + +/* Placeholder for make-docfile to process. The actual symbol + definition is done by lread.c's defsym. */ +#define DEFSYM(sym, name) /* empty */ + + +/*********************************************************************** + Hash Tables + ***********************************************************************/ + +/* The structure of a Lisp hash table. */ + +struct hash_table_test +{ + /* Name of the function used to compare keys. */ + Lisp_Object name; + + /* User-supplied hash function, or nil. */ + Lisp_Object user_hash_function; + + /* User-supplied key comparison function, or nil. */ + Lisp_Object user_cmp_function; + + /* C function to compare two keys. */ + bool (*cmpfn) (struct hash_table_test *t, Lisp_Object, Lisp_Object); + + /* C function to compute hash code. */ + EMACS_UINT (*hashfn) (struct hash_table_test *t, Lisp_Object); +}; + +struct Lisp_Hash_Table +{ + /* This is for Lisp; the hash table code does not refer to it. */ + struct vectorlike_header header; + + /* Nil if table is non-weak. Otherwise a symbol describing the + weakness of the table. */ + Lisp_Object weak; + + /* When the table is resized, and this is an integer, compute the + new size by adding this to the old size. If a float, compute the + new size by multiplying the old size with this factor. */ + Lisp_Object rehash_size; + + /* Resize hash table when number of entries/ table size is >= this + ratio, a float. */ + Lisp_Object rehash_threshold; + + /* Vector of hash codes. If hash[I] is nil, this means that the + I-th entry is unused. */ + Lisp_Object hash; + + /* Vector used to chain entries. If entry I is free, next[I] is the + entry number of the next free item. If entry I is non-free, + next[I] is the index of the next entry in the collision chain. */ + Lisp_Object next; + + /* Index of first free entry in free list. */ + Lisp_Object next_free; + + /* Bucket vector. A non-nil entry is the index of the first item in + a collision chain. This vector's size can be larger than the + hash table size to reduce collisions. */ + Lisp_Object index; + + /* Only the fields above are traced normally by the GC. The ones below + `count' are special and are either ignored by the GC or traced in + a special way (e.g. because of weakness). */ + + /* Number of key/value entries in the table. */ + ptrdiff_t count; + + /* Vector of keys and values. The key of item I is found at index + 2 * I, the value is found at index 2 * I + 1. + This is gc_marked specially if the table is weak. */ + Lisp_Object key_and_value; + + /* The comparison and hash functions. */ + struct hash_table_test test; + + /* Next weak hash table if this is a weak hash table. The head + of the list is in weak_hash_tables. */ + struct Lisp_Hash_Table *next_weak; +}; + + +INLINE struct Lisp_Hash_Table * +XHASH_TABLE (Lisp_Object a) +{ + return XUNTAG (a, Lisp_Vectorlike); +} + +#define XSET_HASH_TABLE(VAR, PTR) \ + (XSETPSEUDOVECTOR (VAR, PTR, PVEC_HASH_TABLE)) + +INLINE bool +HASH_TABLE_P (Lisp_Object a) +{ + return PSEUDOVECTORP (a, PVEC_HASH_TABLE); +} + +/* Value is the key part of entry IDX in hash table H. */ +INLINE Lisp_Object +HASH_KEY (struct Lisp_Hash_Table *h, ptrdiff_t idx) +{ + return AREF (h->key_and_value, 2 * idx); +} + +/* Value is the value part of entry IDX in hash table H. */ +INLINE Lisp_Object +HASH_VALUE (struct Lisp_Hash_Table *h, ptrdiff_t idx) +{ + return AREF (h->key_and_value, 2 * idx + 1); +} + +/* Value is the index of the next entry following the one at IDX + in hash table H. */ +INLINE Lisp_Object +HASH_NEXT (struct Lisp_Hash_Table *h, ptrdiff_t idx) +{ + return AREF (h->next, idx); +} + +/* Value is the hash code computed for entry IDX in hash table H. */ +INLINE Lisp_Object +HASH_HASH (struct Lisp_Hash_Table *h, ptrdiff_t idx) +{ + return AREF (h->hash, idx); +} + +/* Value is the index of the element in hash table H that is the + start of the collision list at index IDX in the index vector of H. */ +INLINE Lisp_Object +HASH_INDEX (struct Lisp_Hash_Table *h, ptrdiff_t idx) +{ + return AREF (h->index, idx); +} + +/* Value is the size of hash table H. */ +INLINE ptrdiff_t +HASH_TABLE_SIZE (struct Lisp_Hash_Table *h) +{ + return ASIZE (h->next); +} + +/* Default size for hash tables if not specified. */ + +enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE = 65 }; + +/* Default threshold specifying when to resize a hash table. The + value gives the ratio of current entries in the hash table and the + size of the hash table. */ + +static double const DEFAULT_REHASH_THRESHOLD = 0.8; + +/* Default factor by which to increase the size of a hash table. */ + +static double const DEFAULT_REHASH_SIZE = 1.5; + +/* Combine two integers X and Y for hashing. The result might not fit + into a Lisp integer. */ + +INLINE EMACS_UINT +sxhash_combine (EMACS_UINT x, EMACS_UINT y) +{ + return (x << 4) + (x >> (BITS_PER_EMACS_INT - 4)) + y; +} + +/* Hash X, returning a value that fits into a fixnum. */ + +INLINE EMACS_UINT +SXHASH_REDUCE (EMACS_UINT x) +{ + return (x ^ x >> (BITS_PER_EMACS_INT - FIXNUM_BITS)) & INTMASK; +} + +/* These structures are used for various misc types. */ + +struct Lisp_Misc_Any /* Supertype of all Misc types. */ +{ + ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_??? */ + bool_bf gcmarkbit : 1; + unsigned spacer : 15; +}; + +struct Lisp_Marker +{ + ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_Marker */ + bool_bf gcmarkbit : 1; + unsigned spacer : 13; + /* This flag is temporarily used in the functions + decode/encode_coding_object to record that the marker position + must be adjusted after the conversion. */ + bool_bf need_adjustment : 1; + /* True means normal insertion at the marker's position + leaves the marker after the inserted text. */ + bool_bf insertion_type : 1; + /* This is the buffer that the marker points into, or 0 if it points nowhere. + Note: a chain of markers can contain markers pointing into different + buffers (the chain is per buffer_text rather than per buffer, so it's + shared between indirect buffers). */ + /* This is used for (other than NULL-checking): + - Fmarker_buffer + - Fset_marker: check eq(oldbuf, newbuf) to avoid unchain+rechain. + - unchain_marker: to find the list from which to unchain. + - Fkill_buffer: to only unchain the markers of current indirect buffer. + */ + struct buffer *buffer; + + /* The remaining fields are meaningless in a marker that + does not point anywhere. */ + + /* For markers that point somewhere, + this is used to chain of all the markers in a given buffer. */ + /* We could remove it and use an array in buffer_text instead. + That would also allow us to preserve it ordered. */ + struct Lisp_Marker *next; + /* This is the char position where the marker points. */ + ptrdiff_t charpos; + /* This is the byte position. + It's mostly used as a charpos<->bytepos cache (i.e. it's not directly + used to implement the functionality of markers, but rather to (ab)use + markers as a cache for char<->byte mappings). */ + ptrdiff_t bytepos; +}; + +/* START and END are markers in the overlay's buffer, and + PLIST is the overlay's property list. */ +struct Lisp_Overlay +/* An overlay's real data content is: + - plist + - buffer (really there are two buffer pointers, one per marker, + and both points to the same buffer) + - insertion type of both ends (per-marker fields) + - start & start byte (of start marker) + - end & end byte (of end marker) + - next (singly linked list of overlays) + - next fields of start and end markers (singly linked list of markers). + I.e. 9words plus 2 bits, 3words of which are for external linked lists. +*/ + { + ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_Overlay */ + bool_bf gcmarkbit : 1; + unsigned spacer : 15; + struct Lisp_Overlay *next; + Lisp_Object start; + Lisp_Object end; + Lisp_Object plist; + }; + +/* Types of data which may be saved in a Lisp_Save_Value. */ + +enum + { + SAVE_UNUSED, + SAVE_INTEGER, + SAVE_FUNCPOINTER, + SAVE_POINTER, + SAVE_OBJECT + }; + +/* Number of bits needed to store one of the above values. */ +enum { SAVE_SLOT_BITS = 3 }; + +/* Number of slots in a save value where save_type is nonzero. */ +enum { SAVE_VALUE_SLOTS = 4 }; + +/* Bit-width and values for struct Lisp_Save_Value's save_type member. */ + +enum { SAVE_TYPE_BITS = SAVE_VALUE_SLOTS * SAVE_SLOT_BITS + 1 }; + +enum Lisp_Save_Type + { + SAVE_TYPE_INT_INT = SAVE_INTEGER + (SAVE_INTEGER << SAVE_SLOT_BITS), + SAVE_TYPE_INT_INT_INT + = (SAVE_INTEGER + (SAVE_TYPE_INT_INT << SAVE_SLOT_BITS)), + SAVE_TYPE_OBJ_OBJ = SAVE_OBJECT + (SAVE_OBJECT << SAVE_SLOT_BITS), + SAVE_TYPE_OBJ_OBJ_OBJ = SAVE_OBJECT + (SAVE_TYPE_OBJ_OBJ << SAVE_SLOT_BITS), + SAVE_TYPE_OBJ_OBJ_OBJ_OBJ + = SAVE_OBJECT + (SAVE_TYPE_OBJ_OBJ_OBJ << SAVE_SLOT_BITS), + SAVE_TYPE_PTR_INT = SAVE_POINTER + (SAVE_INTEGER << SAVE_SLOT_BITS), + SAVE_TYPE_PTR_OBJ = SAVE_POINTER + (SAVE_OBJECT << SAVE_SLOT_BITS), + SAVE_TYPE_PTR_PTR = SAVE_POINTER + (SAVE_POINTER << SAVE_SLOT_BITS), + SAVE_TYPE_FUNCPTR_PTR_OBJ + = SAVE_FUNCPOINTER + (SAVE_TYPE_PTR_OBJ << SAVE_SLOT_BITS), + + /* This has an extra bit indicating it's raw memory. */ + SAVE_TYPE_MEMORY = SAVE_TYPE_PTR_INT + (1 << (SAVE_TYPE_BITS - 1)) + }; + +/* Special object used to hold a different values for later use. + + This is mostly used to package C integers and pointers to call + record_unwind_protect when two or more values need to be saved. + For example: + + ... + struct my_data *md = get_my_data (); + ptrdiff_t mi = get_my_integer (); + record_unwind_protect (my_unwind, make_save_ptr_int (md, mi)); + ... + + Lisp_Object my_unwind (Lisp_Object arg) + { + struct my_data *md = XSAVE_POINTER (arg, 0); + ptrdiff_t mi = XSAVE_INTEGER (arg, 1); + ... + } + + If ENABLE_CHECKING is in effect, XSAVE_xxx macros do type checking of the + saved objects and raise eassert if type of the saved object doesn't match + the type which is extracted. In the example above, XSAVE_INTEGER (arg, 2) + and XSAVE_OBJECT (arg, 0) are wrong because nothing was saved in slot 2 and + slot 0 is a pointer. */ + +typedef void (*voidfuncptr) (void); + +struct Lisp_Save_Value + { + ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_Save_Value */ + bool_bf gcmarkbit : 1; + unsigned spacer : 32 - (16 + 1 + SAVE_TYPE_BITS); + + /* V->data may hold up to SAVE_VALUE_SLOTS entries. The type of + V's data entries are determined by V->save_type. E.g., if + V->save_type == SAVE_TYPE_PTR_OBJ, V->data[0] is a pointer, + V->data[1] is an integer, and V's other data entries are unused. + + If V->save_type == SAVE_TYPE_MEMORY, V->data[0].pointer is the address of + a memory area containing V->data[1].integer potential Lisp_Objects. */ + ENUM_BF (Lisp_Save_Type) save_type : SAVE_TYPE_BITS; + union { + void *pointer; + voidfuncptr funcpointer; + ptrdiff_t integer; + Lisp_Object object; + } data[SAVE_VALUE_SLOTS]; + }; + +/* Return the type of V's Nth saved value. */ +INLINE int +save_type (struct Lisp_Save_Value *v, int n) +{ + eassert (0 <= n && n < SAVE_VALUE_SLOTS); + return (v->save_type >> (SAVE_SLOT_BITS * n) & ((1 << SAVE_SLOT_BITS) - 1)); +} + +/* Get and set the Nth saved pointer. */ + +INLINE void * +XSAVE_POINTER (Lisp_Object obj, int n) +{ + eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_POINTER); + return XSAVE_VALUE (obj)->data[n].pointer; +} +INLINE void +set_save_pointer (Lisp_Object obj, int n, void *val) +{ + eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_POINTER); + XSAVE_VALUE (obj)->data[n].pointer = val; +} +INLINE voidfuncptr +XSAVE_FUNCPOINTER (Lisp_Object obj, int n) +{ + eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_FUNCPOINTER); + return XSAVE_VALUE (obj)->data[n].funcpointer; +} + +/* Likewise for the saved integer. */ + +INLINE ptrdiff_t +XSAVE_INTEGER (Lisp_Object obj, int n) +{ + eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_INTEGER); + return XSAVE_VALUE (obj)->data[n].integer; +} +INLINE void +set_save_integer (Lisp_Object obj, int n, ptrdiff_t val) +{ + eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_INTEGER); + XSAVE_VALUE (obj)->data[n].integer = val; +} + +/* Extract Nth saved object. */ + +INLINE Lisp_Object +XSAVE_OBJECT (Lisp_Object obj, int n) +{ + eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_OBJECT); + return XSAVE_VALUE (obj)->data[n].object; +} + +/* A finalizer sentinel. */ +struct Lisp_Finalizer + { + struct Lisp_Misc_Any base; + + /* Circular list of all active weak references. */ + struct Lisp_Finalizer *prev; + struct Lisp_Finalizer *next; + + /* Call FUNCTION when the finalizer becomes unreachable, even if + FUNCTION contains a reference to the finalizer; i.e., call + FUNCTION when it is reachable _only_ through finalizers. */ + Lisp_Object function; + }; + +/* A miscellaneous object, when it's on the free list. */ +struct Lisp_Free + { + ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_Free */ + bool_bf gcmarkbit : 1; + unsigned spacer : 15; + union Lisp_Misc *chain; + }; + +/* To get the type field of a union Lisp_Misc, use XMISCTYPE. + It uses one of these struct subtypes to get the type field. */ + +union Lisp_Misc + { + struct Lisp_Misc_Any u_any; /* Supertype of all Misc types. */ + struct Lisp_Free u_free; + struct Lisp_Marker u_marker; + struct Lisp_Overlay u_overlay; + struct Lisp_Save_Value u_save_value; + struct Lisp_Finalizer u_finalizer; + }; + +INLINE union Lisp_Misc * +XMISC (Lisp_Object a) +{ + return XUNTAG (a, Lisp_Misc); +} + +INLINE struct Lisp_Misc_Any * +XMISCANY (Lisp_Object a) +{ + eassert (MISCP (a)); + return & XMISC (a)->u_any; +} + +INLINE enum Lisp_Misc_Type +XMISCTYPE (Lisp_Object a) +{ + return XMISCANY (a)->type; +} + +INLINE struct Lisp_Marker * +XMARKER (Lisp_Object a) +{ + eassert (MARKERP (a)); + return & XMISC (a)->u_marker; +} + +INLINE struct Lisp_Overlay * +XOVERLAY (Lisp_Object a) +{ + eassert (OVERLAYP (a)); + return & XMISC (a)->u_overlay; +} + +INLINE struct Lisp_Save_Value * +XSAVE_VALUE (Lisp_Object a) +{ + eassert (SAVE_VALUEP (a)); + return & XMISC (a)->u_save_value; +} + +INLINE struct Lisp_Finalizer * +XFINALIZER (Lisp_Object a) +{ + eassert (FINALIZERP (a)); + return & XMISC (a)->u_finalizer; +} + + +/* Forwarding pointer to an int variable. + This is allowed only in the value cell of a symbol, + and it means that the symbol's value really lives in the + specified int variable. */ +struct Lisp_Intfwd + { + enum Lisp_Fwd_Type type; /* = Lisp_Fwd_Int */ + EMACS_INT *intvar; + }; + +/* Boolean forwarding pointer to an int variable. + This is like Lisp_Intfwd except that the ostensible + "value" of the symbol is t if the bool variable is true, + nil if it is false. */ +struct Lisp_Boolfwd + { + enum Lisp_Fwd_Type type; /* = Lisp_Fwd_Bool */ + bool *boolvar; + }; + +/* Forwarding pointer to a Lisp_Object variable. + This is allowed only in the value cell of a symbol, + and it means that the symbol's value really lives in the + specified variable. */ +struct Lisp_Objfwd + { + enum Lisp_Fwd_Type type; /* = Lisp_Fwd_Obj */ + Lisp_Object *objvar; + }; + +/* Like Lisp_Objfwd except that value lives in a slot in the + current buffer. Value is byte index of slot within buffer. */ +struct Lisp_Buffer_Objfwd + { + enum Lisp_Fwd_Type type; /* = Lisp_Fwd_Buffer_Obj */ + int offset; + /* One of Qnil, Qintegerp, Qsymbolp, Qstringp, Qfloatp or Qnumberp. */ + Lisp_Object predicate; + }; + +/* struct Lisp_Buffer_Local_Value is used in a symbol value cell when + the symbol has buffer-local or frame-local bindings. (Exception: + some buffer-local variables are built-in, with their values stored + in the buffer structure itself. They are handled differently, + using struct Lisp_Buffer_Objfwd.) + + The `realvalue' slot holds the variable's current value, or a + forwarding pointer to where that value is kept. This value is the + one that corresponds to the loaded binding. To read or set the + variable, you must first make sure the right binding is loaded; + then you can access the value in (or through) `realvalue'. + + `buffer' and `frame' are the buffer and frame for which the loaded + binding was found. If those have changed, to make sure the right + binding is loaded it is necessary to find which binding goes with + the current buffer and selected frame, then load it. To load it, + first unload the previous binding, then copy the value of the new + binding into `realvalue' (or through it). Also update + LOADED-BINDING to point to the newly loaded binding. + + `local_if_set' indicates that merely setting the variable creates a + local binding for the current buffer. Otherwise the latter, setting + the variable does not do that; only make-local-variable does that. */ + +struct Lisp_Buffer_Local_Value + { + /* True means that merely setting the variable creates a local + binding for the current buffer. */ + bool_bf local_if_set : 1; + /* True means this variable can have frame-local bindings, otherwise, it is + can have buffer-local bindings. The two cannot be combined. */ + bool_bf frame_local : 1; + /* True means that the binding now loaded was found. + Presumably equivalent to (defcell!=valcell). */ + bool_bf found : 1; + /* If non-NULL, a forwarding to the C var where it should also be set. */ + union Lisp_Fwd *fwd; /* Should never be (Buffer|Kboard)_Objfwd. */ + /* The buffer or frame for which the loaded binding was found. */ + Lisp_Object where; + /* A cons cell that holds the default value. It has the form + (SYMBOL . DEFAULT-VALUE). */ + Lisp_Object defcell; + /* The cons cell from `where's parameter alist. + It always has the form (SYMBOL . VALUE) + Note that if `forward' is non-nil, VALUE may be out of date. + Also if the currently loaded binding is the default binding, then + this is `eq'ual to defcell. */ + Lisp_Object valcell; + }; + +/* Like Lisp_Objfwd except that value lives in a slot in the + current kboard. */ +struct Lisp_Kboard_Objfwd + { + enum Lisp_Fwd_Type type; /* = Lisp_Fwd_Kboard_Obj */ + int offset; + }; + +union Lisp_Fwd + { + struct Lisp_Intfwd u_intfwd; + struct Lisp_Boolfwd u_boolfwd; + struct Lisp_Objfwd u_objfwd; + struct Lisp_Buffer_Objfwd u_buffer_objfwd; + struct Lisp_Kboard_Objfwd u_kboard_objfwd; + }; + +INLINE enum Lisp_Fwd_Type +XFWDTYPE (union Lisp_Fwd *a) +{ + return a->u_intfwd.type; +} + +INLINE struct Lisp_Buffer_Objfwd * +XBUFFER_OBJFWD (union Lisp_Fwd *a) +{ + eassert (BUFFER_OBJFWDP (a)); + return &a->u_buffer_objfwd; +} + +/* Lisp floating point type. */ +struct Lisp_Float + { + union + { + double data; + struct Lisp_Float *chain; + } u; + }; + +INLINE double +XFLOAT_DATA (Lisp_Object f) +{ + return XFLOAT (f)->u.data; +} + +/* Most hosts nowadays use IEEE floating point, so they use IEC 60559 + representations, have infinities and NaNs, and do not trap on + exceptions. Define IEEE_FLOATING_POINT if this host is one of the + typical ones. The C11 macro __STDC_IEC_559__ is close to what is + wanted here, but is not quite right because Emacs does not require + all the features of C11 Annex F (and does not require C11 at all, + for that matter). */ +enum + { + IEEE_FLOATING_POINT + = (FLT_RADIX == 2 && FLT_MANT_DIG == 24 + && FLT_MIN_EXP == -125 && FLT_MAX_EXP == 128) + }; + +/* A character, declared with the following typedef, is a member + of some character set associated with the current buffer. */ +#ifndef _UCHAR_T /* Protect against something in ctab.h on AIX. */ +#define _UCHAR_T +typedef unsigned char UCHAR; +#endif + +/* Meanings of slots in a Lisp_Compiled: */ + +enum Lisp_Compiled + { + COMPILED_ARGLIST = 0, + COMPILED_BYTECODE = 1, + COMPILED_CONSTANTS = 2, + COMPILED_STACK_DEPTH = 3, + COMPILED_DOC_STRING = 4, + COMPILED_INTERACTIVE = 5 + }; + +/* Flag bits in a character. These also get used in termhooks.h. + Richard Stallman thinks that MULE + (MUlti-Lingual Emacs) might need 22 bits for the character value + itself, so we probably shouldn't use any bits lower than 0x0400000. */ +enum char_bits + { + CHAR_ALT = 0x0400000, + CHAR_SUPER = 0x0800000, + CHAR_HYPER = 0x1000000, + CHAR_SHIFT = 0x2000000, + CHAR_CTL = 0x4000000, + CHAR_META = 0x8000000, + + CHAR_MODIFIER_MASK = + CHAR_ALT | CHAR_SUPER | CHAR_HYPER | CHAR_SHIFT | CHAR_CTL | CHAR_META, + + /* Actually, the current Emacs uses 22 bits for the character value + itself. */ + CHARACTERBITS = 22 + }; + +/* Data type checking. */ + +LISP_MACRO_DEFUN (NILP, bool, (Lisp_Object x), (x)) + +INLINE bool +NUMBERP (Lisp_Object x) +{ + return INTEGERP (x) || FLOATP (x); +} +INLINE bool +NATNUMP (Lisp_Object x) +{ + return INTEGERP (x) && 0 <= XINT (x); +} + +INLINE bool +RANGED_INTEGERP (intmax_t lo, Lisp_Object x, intmax_t hi) +{ + return INTEGERP (x) && lo <= XINT (x) && XINT (x) <= hi; +} + +#define TYPE_RANGED_INTEGERP(type, x) \ + (INTEGERP (x) \ + && (TYPE_SIGNED (type) ? TYPE_MINIMUM (type) <= XINT (x) : 0 <= XINT (x)) \ + && XINT (x) <= TYPE_MAXIMUM (type)) + +LISP_MACRO_DEFUN (CONSP, bool, (Lisp_Object x), (x)) +LISP_MACRO_DEFUN (FLOATP, bool, (Lisp_Object x), (x)) +LISP_MACRO_DEFUN (MISCP, bool, (Lisp_Object x), (x)) +LISP_MACRO_DEFUN (SYMBOLP, bool, (Lisp_Object x), (x)) +LISP_MACRO_DEFUN (INTEGERP, bool, (Lisp_Object x), (x)) +LISP_MACRO_DEFUN (VECTORLIKEP, bool, (Lisp_Object x), (x)) +LISP_MACRO_DEFUN (MARKERP, bool, (Lisp_Object x), (x)) + +INLINE bool +STRINGP (Lisp_Object x) +{ + return XTYPE (x) == Lisp_String; +} +INLINE bool +VECTORP (Lisp_Object x) +{ + return VECTORLIKEP (x) && ! (ASIZE (x) & PSEUDOVECTOR_FLAG); +} +INLINE bool +OVERLAYP (Lisp_Object x) +{ + return MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Overlay; +} +INLINE bool +SAVE_VALUEP (Lisp_Object x) +{ + return MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Save_Value; +} + +INLINE bool +FINALIZERP (Lisp_Object x) +{ + return MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Finalizer; +} + +INLINE bool +AUTOLOADP (Lisp_Object x) +{ + return CONSP (x) && EQ (Qautoload, XCAR (x)); +} + +INLINE bool +BUFFER_OBJFWDP (union Lisp_Fwd *a) +{ + return XFWDTYPE (a) == Lisp_Fwd_Buffer_Obj; +} + +INLINE bool +PSEUDOVECTOR_TYPEP (struct vectorlike_header *a, int code) +{ + return ((a->size & (PSEUDOVECTOR_FLAG | PVEC_TYPE_MASK)) + == (PSEUDOVECTOR_FLAG | (code << PSEUDOVECTOR_AREA_BITS))); +} + +/* True if A is a pseudovector whose code is CODE. */ +INLINE bool +PSEUDOVECTORP (Lisp_Object a, int code) +{ + if (! VECTORLIKEP (a)) + return false; + else + { + /* Converting to struct vectorlike_header * avoids aliasing issues. */ + struct vectorlike_header *h = XUNTAG (a, Lisp_Vectorlike); + return PSEUDOVECTOR_TYPEP (h, code); + } +} + + +/* Test for specific pseudovector types. */ + +INLINE bool +WINDOW_CONFIGURATIONP (Lisp_Object a) +{ + return PSEUDOVECTORP (a, PVEC_WINDOW_CONFIGURATION); +} + +INLINE bool +PROCESSP (Lisp_Object a) +{ + return PSEUDOVECTORP (a, PVEC_PROCESS); +} + +INLINE bool +WINDOWP (Lisp_Object a) +{ + return PSEUDOVECTORP (a, PVEC_WINDOW); +} + +INLINE bool +TERMINALP (Lisp_Object a) +{ + return PSEUDOVECTORP (a, PVEC_TERMINAL); +} + +INLINE bool +SUBRP (Lisp_Object a) +{ + return PSEUDOVECTORP (a, PVEC_SUBR); +} + +INLINE bool +COMPILEDP (Lisp_Object a) +{ + return PSEUDOVECTORP (a, PVEC_COMPILED); +} + +INLINE bool +BUFFERP (Lisp_Object a) +{ + return PSEUDOVECTORP (a, PVEC_BUFFER); +} + +INLINE bool +CHAR_TABLE_P (Lisp_Object a) +{ + return PSEUDOVECTORP (a, PVEC_CHAR_TABLE); +} + +INLINE bool +SUB_CHAR_TABLE_P (Lisp_Object a) +{ + return PSEUDOVECTORP (a, PVEC_SUB_CHAR_TABLE); +} + +INLINE bool +BOOL_VECTOR_P (Lisp_Object a) +{ + return PSEUDOVECTORP (a, PVEC_BOOL_VECTOR); +} + +INLINE bool +FRAMEP (Lisp_Object a) +{ + return PSEUDOVECTORP (a, PVEC_FRAME); +} + +/* Test for image (image . spec) */ +INLINE bool +IMAGEP (Lisp_Object x) +{ + return CONSP (x) && EQ (XCAR (x), Qimage); +} + +/* Array types. */ +INLINE bool +ARRAYP (Lisp_Object x) +{ + return VECTORP (x) || STRINGP (x) || CHAR_TABLE_P (x) || BOOL_VECTOR_P (x); +} + +INLINE void +CHECK_LIST (Lisp_Object x) +{ + CHECK_TYPE (CONSP (x) || NILP (x), Qlistp, x); +} + +LISP_MACRO_DEFUN_VOID (CHECK_LIST_CONS, (Lisp_Object x, Lisp_Object y), (x, y)) +LISP_MACRO_DEFUN_VOID (CHECK_SYMBOL, (Lisp_Object x), (x)) +LISP_MACRO_DEFUN_VOID (CHECK_NUMBER, (Lisp_Object x), (x)) + +INLINE void +CHECK_STRING (Lisp_Object x) +{ + CHECK_TYPE (STRINGP (x), Qstringp, x); +} +INLINE void +CHECK_STRING_CAR (Lisp_Object x) +{ + CHECK_TYPE (STRINGP (XCAR (x)), Qstringp, XCAR (x)); +} +INLINE void +CHECK_CONS (Lisp_Object x) +{ + CHECK_TYPE (CONSP (x), Qconsp, x); +} +INLINE void +CHECK_VECTOR (Lisp_Object x) +{ + CHECK_TYPE (VECTORP (x), Qvectorp, x); +} +INLINE void +CHECK_BOOL_VECTOR (Lisp_Object x) +{ + CHECK_TYPE (BOOL_VECTOR_P (x), Qbool_vector_p, x); +} +/* This is a bit special because we always need size afterwards. */ +INLINE ptrdiff_t +CHECK_VECTOR_OR_STRING (Lisp_Object x) +{ + if (VECTORP (x)) + return ASIZE (x); + if (STRINGP (x)) + return SCHARS (x); + wrong_type_argument (Qarrayp, x); +} +INLINE void +CHECK_ARRAY (Lisp_Object x, Lisp_Object predicate) +{ + CHECK_TYPE (ARRAYP (x), predicate, x); +} +INLINE void +CHECK_BUFFER (Lisp_Object x) +{ + CHECK_TYPE (BUFFERP (x), Qbufferp, x); +} +INLINE void +CHECK_WINDOW (Lisp_Object x) +{ + CHECK_TYPE (WINDOWP (x), Qwindowp, x); +} +#ifdef subprocesses +INLINE void +CHECK_PROCESS (Lisp_Object x) +{ + CHECK_TYPE (PROCESSP (x), Qprocessp, x); +} +#endif +INLINE void +CHECK_NATNUM (Lisp_Object x) +{ + CHECK_TYPE (NATNUMP (x), Qwholenump, x); +} + +#define CHECK_RANGED_INTEGER(x, lo, hi) \ + do { \ + CHECK_NUMBER (x); \ + if (! ((lo) <= XINT (x) && XINT (x) <= (hi))) \ + args_out_of_range_3 \ + (x, \ + make_number ((lo) < 0 && (lo) < MOST_NEGATIVE_FIXNUM \ + ? MOST_NEGATIVE_FIXNUM \ + : (lo)), \ + make_number (min (hi, MOST_POSITIVE_FIXNUM))); \ + } while (false) +#define CHECK_TYPE_RANGED_INTEGER(type, x) \ + do { \ + if (TYPE_SIGNED (type)) \ + CHECK_RANGED_INTEGER (x, TYPE_MINIMUM (type), TYPE_MAXIMUM (type)); \ + else \ + CHECK_RANGED_INTEGER (x, 0, TYPE_MAXIMUM (type)); \ + } while (false) + +#define CHECK_NUMBER_COERCE_MARKER(x) \ + do { \ + if (MARKERP ((x))) \ + XSETFASTINT (x, marker_position (x)); \ + else \ + CHECK_TYPE (INTEGERP (x), Qinteger_or_marker_p, x); \ + } while (false) + +INLINE double +XFLOATINT (Lisp_Object n) +{ + return extract_float (n); +} + +INLINE void +CHECK_NUMBER_OR_FLOAT (Lisp_Object x) +{ + CHECK_TYPE (FLOATP (x) || INTEGERP (x), Qnumberp, x); +} + +#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(x) \ + do { \ + if (MARKERP (x)) \ + XSETFASTINT (x, marker_position (x)); \ + else \ + CHECK_TYPE (INTEGERP (x) || FLOATP (x), Qnumber_or_marker_p, x); \ + } while (false) + +/* Since we can't assign directly to the CAR or CDR fields of a cons + cell, use these when checking that those fields contain numbers. */ +INLINE void +CHECK_NUMBER_CAR (Lisp_Object x) +{ + Lisp_Object tmp = XCAR (x); + CHECK_NUMBER (tmp); + XSETCAR (x, tmp); +} + +INLINE void +CHECK_NUMBER_CDR (Lisp_Object x) +{ + Lisp_Object tmp = XCDR (x); + CHECK_NUMBER (tmp); + XSETCDR (x, tmp); +} + +/* Define a built-in function for calling from Lisp. + `lname' should be the name to give the function in Lisp, + as a null-terminated C string. + `fnname' should be the name of the function in C. + By convention, it starts with F. + `sname' should be the name for the C constant structure + that records information on this function for internal use. + By convention, it should be the same as `fnname' but with S instead of F. + It's too bad that C macros can't compute this from `fnname'. + `minargs' should be a number, the minimum number of arguments allowed. + `maxargs' should be a number, the maximum number of arguments allowed, + or else MANY or UNEVALLED. + MANY means pass a vector of evaluated arguments, + in the form of an integer number-of-arguments + followed by the address of a vector of Lisp_Objects + which contains the argument values. + UNEVALLED means pass the list of unevaluated arguments + `intspec' says how interactive arguments are to be fetched. + If the string starts with a `(', `intspec' is evaluated and the resulting + list is the list of arguments. + If it's a string that doesn't start with `(', the value should follow + the one of the doc string for `interactive'. + A null string means call interactively with no arguments. + `doc' is documentation for the user. */ + +/* This version of DEFUN declares a function prototype with the right + arguments, so we can catch errors with maxargs at compile-time. */ +#ifdef _MSC_VER +#define DEFUN(lname, fnname, sname, minargs, maxargs, intspec, doc) \ + Lisp_Object fnname DEFUN_ARGS_ ## maxargs ; \ + static struct Lisp_Subr alignas (GCALIGNMENT) sname = \ + { { (PVEC_SUBR << PSEUDOVECTOR_AREA_BITS) \ + | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)) }, \ + { (Lisp_Object (__cdecl *)(void))fnname }, \ + minargs, maxargs, lname, intspec, 0}; \ + Lisp_Object fnname +#else /* not _MSC_VER */ +#define DEFUN(lname, fnname, sname, minargs, maxargs, intspec, doc) \ + static struct Lisp_Subr alignas (GCALIGNMENT) sname = \ + { { PVEC_SUBR << PSEUDOVECTOR_AREA_BITS }, \ + { .a ## maxargs = fnname }, \ + minargs, maxargs, lname, intspec, 0}; \ + Lisp_Object fnname +#endif + +/* True if OBJ is a Lisp function. */ +INLINE bool +FUNCTIONP (Lisp_Object obj) +{ + return functionp (obj); +} + +/* defsubr (Sname); + is how we define the symbol for function `name' at start-up time. */ +extern void defsubr (struct Lisp_Subr *); + +enum maxargs + { + MANY = -2, + UNEVALLED = -1 + }; + +/* Call a function F that accepts many args, passing it ARRAY's elements. */ +#define CALLMANY(f, array) (f) (ARRAYELTS (array), array) + +/* Call a function F that accepts many args, passing it the remaining args, + E.g., 'return CALLN (Fformat, fmt, text);' is less error-prone than + '{ Lisp_Object a[2]; a[0] = fmt; a[1] = text; return Fformat (2, a); }'. + CALLN is overkill for simple usages like 'Finsert (1, &text);'. */ +#define CALLN(f, ...) CALLMANY (f, ((Lisp_Object []) {__VA_ARGS__})) + +extern void defvar_lisp (struct Lisp_Objfwd *, const char *, Lisp_Object *); +extern void defvar_lisp_nopro (struct Lisp_Objfwd *, const char *, Lisp_Object *); +extern void defvar_bool (struct Lisp_Boolfwd *, const char *, bool *); +extern void defvar_int (struct Lisp_Intfwd *, const char *, EMACS_INT *); +extern void defvar_kboard (struct Lisp_Kboard_Objfwd *, const char *, int); + +/* Macros we use to define forwarded Lisp variables. + These are used in the syms_of_FILENAME functions. + + An ordinary (not in buffer_defaults, per-buffer, or per-keyboard) + lisp variable is actually a field in `struct emacs_globals'. The + field's name begins with "f_", which is a convention enforced by + these macros. Each such global has a corresponding #define in + globals.h; the plain name should be used in the code. + + E.g., the global "cons_cells_consed" is declared as "int + f_cons_cells_consed" in globals.h, but there is a define: + + #define cons_cells_consed globals.f_cons_cells_consed + + All C code uses the `cons_cells_consed' name. This is all done + this way to support indirection for multi-threaded Emacs. */ + +#define DEFVAR_LISP(lname, vname, doc) \ + do { \ + static struct Lisp_Objfwd o_fwd; \ + defvar_lisp (&o_fwd, lname, &globals.f_ ## vname); \ + } while (false) +#define DEFVAR_LISP_NOPRO(lname, vname, doc) \ + do { \ + static struct Lisp_Objfwd o_fwd; \ + defvar_lisp_nopro (&o_fwd, lname, &globals.f_ ## vname); \ + } while (false) +#define DEFVAR_BOOL(lname, vname, doc) \ + do { \ + static struct Lisp_Boolfwd b_fwd; \ + defvar_bool (&b_fwd, lname, &globals.f_ ## vname); \ + } while (false) +#define DEFVAR_INT(lname, vname, doc) \ + do { \ + static struct Lisp_Intfwd i_fwd; \ + defvar_int (&i_fwd, lname, &globals.f_ ## vname); \ + } while (false) + +#define DEFVAR_BUFFER_DEFAULTS(lname, vname, doc) \ + do { \ + static struct Lisp_Objfwd o_fwd; \ + defvar_lisp_nopro (&o_fwd, lname, &BVAR (&buffer_defaults, vname)); \ + } while (false) + +#define DEFVAR_KBOARD(lname, vname, doc) \ + do { \ + static struct Lisp_Kboard_Objfwd ko_fwd; \ + defvar_kboard (&ko_fwd, lname, offsetof (KBOARD, vname ## _)); \ + } while (false) + +/* Save and restore the instruction and environment pointers, + without affecting the signal mask. */ + +#ifdef HAVE__SETJMP +typedef jmp_buf sys_jmp_buf; +# define sys_setjmp(j) _setjmp (j) +# define sys_longjmp(j, v) _longjmp (j, v) +#elif defined HAVE_SIGSETJMP +typedef sigjmp_buf sys_jmp_buf; +# define sys_setjmp(j) sigsetjmp (j, 0) +# define sys_longjmp(j, v) siglongjmp (j, v) +#else +/* A platform that uses neither _longjmp nor siglongjmp; assume + longjmp does not affect the sigmask. */ +typedef jmp_buf sys_jmp_buf; +# define sys_setjmp(j) setjmp (j) +# define sys_longjmp(j, v) longjmp (j, v) +#endif + + +/* Elisp uses several stacks: + - the C stack. + - the bytecode stack: used internally by the bytecode interpreter. + Allocated from the C stack. + - The specpdl stack: keeps track of active unwind-protect and + dynamic-let-bindings. Allocated from the `specpdl' array, a manually + managed stack. + - The handler stack: keeps track of active catch tags and condition-case + handlers. Allocated in a manually managed stack implemented by a + doubly-linked list allocated via xmalloc and never freed. */ + +/* Structure for recording Lisp call stack for backtrace purposes. */ + +/* The special binding stack holds the outer values of variables while + they are bound by a function application or a let form, stores the + code to be executed for unwind-protect forms. + + NOTE: The specbinding union is defined here, because SPECPDL_INDEX is + used all over the place, needs to be fast, and needs to know the size of + union specbinding. But only eval.c should access it. */ + +enum specbind_tag { + SPECPDL_UNWIND, /* An unwind_protect function on Lisp_Object. */ + SPECPDL_UNWIND_PTR, /* Likewise, on void *. */ + SPECPDL_UNWIND_INT, /* Likewise, on int. */ + SPECPDL_UNWIND_VOID, /* Likewise, with no arg. */ + SPECPDL_BACKTRACE, /* An element of the backtrace. */ + SPECPDL_LET, /* A plain and simple dynamic let-binding. */ + /* Tags greater than SPECPDL_LET must be "subkinds" of LET. */ + SPECPDL_LET_LOCAL, /* A buffer-local let-binding. */ + SPECPDL_LET_DEFAULT /* A global binding for a localized var. */ +}; + +union specbinding + { + ENUM_BF (specbind_tag) kind : CHAR_BIT; + struct { + ENUM_BF (specbind_tag) kind : CHAR_BIT; + void (*func) (Lisp_Object); + Lisp_Object arg; + } unwind; + struct { + ENUM_BF (specbind_tag) kind : CHAR_BIT; + void (*func) (void *); + void *arg; + } unwind_ptr; + struct { + ENUM_BF (specbind_tag) kind : CHAR_BIT; + void (*func) (int); + int arg; + } unwind_int; + struct { + ENUM_BF (specbind_tag) kind : CHAR_BIT; + void (*func) (void); + } unwind_void; + struct { + ENUM_BF (specbind_tag) kind : CHAR_BIT; + /* `where' is not used in the case of SPECPDL_LET. */ + Lisp_Object symbol, old_value, where; + } let; + struct { + ENUM_BF (specbind_tag) kind : CHAR_BIT; + bool_bf debug_on_exit : 1; + Lisp_Object function; + Lisp_Object *args; + ptrdiff_t nargs; + } bt; + }; + +extern union specbinding *specpdl; +extern union specbinding *specpdl_ptr; +extern ptrdiff_t specpdl_size; + +INLINE ptrdiff_t +SPECPDL_INDEX (void) +{ + return specpdl_ptr - specpdl; +} + +/* This structure helps implement the `catch/throw' and `condition-case/signal' + control structures. A struct handler contains all the information needed to + restore the state of the interpreter after a non-local jump. + + handler structures are chained together in a doubly linked list; the `next' + member points to the next outer catchtag and the `nextfree' member points in + the other direction to the next inner element (which is typically the next + free element since we mostly use it on the deepest handler). + + A call like (throw TAG VAL) searches for a catchtag whose `tag_or_ch' + member is TAG, and then unbinds to it. The `val' member is used to + hold VAL while the stack is unwound; `val' is returned as the value + of the catch form. + + All the other members are concerned with restoring the interpreter + state. + + Members are volatile if their values need to survive _longjmp when + a 'struct handler' is a local variable. */ + +enum handlertype { CATCHER, CONDITION_CASE }; + +struct handler +{ + enum handlertype type; + Lisp_Object tag_or_ch; + Lisp_Object val; + struct handler *next; + struct handler *nextfree; + + /* The bytecode interpreter can have several handlers active at the same + time, so when we longjmp to one of them, it needs to know which handler + this was and what was the corresponding internal state. This is stored + here, and when we longjmp we make sure that handlerlist points to the + proper handler. */ + Lisp_Object *bytecode_top; + int bytecode_dest; + + /* Most global vars are reset to their value via the specpdl mechanism, + but a few others are handled by storing their value here. */ +#if true /* GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS, but defined later. */ + struct gcpro *gcpro; +#endif + sys_jmp_buf jmp; + EMACS_INT lisp_eval_depth; + ptrdiff_t pdlcount; + int poll_suppress_count; + int interrupt_input_blocked; + struct byte_stack *byte_stack; +}; + +/* Fill in the components of c, and put it on the list. */ +#define PUSH_HANDLER(c, tag_ch_val, handlertype) \ + if (handlerlist->nextfree) \ + (c) = handlerlist->nextfree; \ + else \ + { \ + (c) = xmalloc (sizeof (struct handler)); \ + (c)->nextfree = NULL; \ + handlerlist->nextfree = (c); \ + } \ + (c)->type = (handlertype); \ + (c)->tag_or_ch = (tag_ch_val); \ + (c)->val = Qnil; \ + (c)->next = handlerlist; \ + (c)->lisp_eval_depth = lisp_eval_depth; \ + (c)->pdlcount = SPECPDL_INDEX (); \ + (c)->poll_suppress_count = poll_suppress_count; \ + (c)->interrupt_input_blocked = interrupt_input_blocked;\ + (c)->gcpro = gcprolist; \ + (c)->byte_stack = byte_stack_list; \ + handlerlist = (c); + + +extern Lisp_Object memory_signal_data; + +/* An address near the bottom of the stack. + Tells GC how to save a copy of the stack. */ +extern char *stack_bottom; + +/* Check quit-flag and quit if it is non-nil. + Typing C-g does not directly cause a quit; it only sets Vquit_flag. + So the program needs to do QUIT at times when it is safe to quit. + Every loop that might run for a long time or might not exit + ought to do QUIT at least once, at a safe place. + Unless that is impossible, of course. + But it is very desirable to avoid creating loops where QUIT is impossible. + + Exception: if you set immediate_quit to true, + then the handler that responds to the C-g does the quit itself. + This is a good thing to do around a loop that has no side effects + and (in particular) cannot call arbitrary Lisp code. + + If quit-flag is set to `kill-emacs' the SIGINT handler has received + a request to exit Emacs when it is safe to do. */ + +extern void process_pending_signals (void); +extern bool volatile pending_signals; + +extern void process_quit_flag (void); +#define QUIT \ + do { \ + if (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) \ + process_quit_flag (); \ + else if (pending_signals) \ + process_pending_signals (); \ + } while (false) + + +/* True if ought to quit now. */ + +#define QUITP (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) + +extern Lisp_Object Vascii_downcase_table; +extern Lisp_Object Vascii_canon_table; + +/* Structure for recording stack slots that need marking. */ + +/* This is a chain of structures, each of which points at a Lisp_Object + variable whose value should be marked in garbage collection. + Normally every link of the chain is an automatic variable of a function, + and its `val' points to some argument or local variable of the function. + On exit to the function, the chain is set back to the value it had on entry. + This way, no link remains in the chain when the stack frame containing the + link disappears. + + Every function that can call Feval must protect in this fashion all + Lisp_Object variables whose contents will be used again. */ + +extern struct gcpro *gcprolist; + +struct gcpro +{ + struct gcpro *next; + + /* Address of first protected variable. */ + volatile Lisp_Object *var; + + /* Number of consecutive protected variables. */ + ptrdiff_t nvars; + +#ifdef DEBUG_GCPRO + /* File name where this record is used. */ + const char *name; + + /* Line number in this file. */ + int lineno; + + /* Index in the local chain of records. */ + int idx; + + /* Nesting level. */ + int level; +#endif +}; + +/* Values of GC_MARK_STACK during compilation: + + 0 Use GCPRO as before + 1 Do the real thing, make GCPROs and UNGCPRO no-ops. + 2 Mark the stack, and check that everything GCPRO'd is + marked. + 3 Mark using GCPRO's, mark stack last, and count how many + dead objects are kept alive. + + Formerly, method 0 was used. Currently, method 1 is used unless + otherwise specified by hand when building, e.g., + "make CPPFLAGS='-DGC_MARK_STACK=GC_USE_GCPROS_AS_BEFORE'". + Methods 2 and 3 are present mainly to debug the transition from 0 to 1. */ + +#define GC_USE_GCPROS_AS_BEFORE 0 +#define GC_MAKE_GCPROS_NOOPS 1 +#define GC_MARK_STACK_CHECK_GCPROS 2 +#define GC_USE_GCPROS_CHECK_ZOMBIES 3 + +#ifndef GC_MARK_STACK +#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS +#endif + +/* Whether we do the stack marking manually. */ +#define BYTE_MARK_STACK !(GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS \ + || GC_MARK_STACK == GC_MARK_STACK_CHECK_GCPROS) + + +#if GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS + +/* Do something silly with gcproN vars just so gcc shuts up. */ +/* You get warnings from MIPSPro... */ + +#define GCPRO1(varname) ((void) gcpro1) +#define GCPRO2(varname1, varname2) ((void) gcpro2, (void) gcpro1) +#define GCPRO3(varname1, varname2, varname3) \ + ((void) gcpro3, (void) gcpro2, (void) gcpro1) +#define GCPRO4(varname1, varname2, varname3, varname4) \ + ((void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1) +#define GCPRO5(varname1, varname2, varname3, varname4, varname5) \ + ((void) gcpro5, (void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1) +#define GCPRO6(varname1, varname2, varname3, varname4, varname5, varname6) \ + ((void) gcpro6, (void) gcpro5, (void) gcpro4, (void) gcpro3, (void) gcpro2, \ + (void) gcpro1) +#define GCPRO7(a, b, c, d, e, f, g) (GCPRO6 (a, b, c, d, e, f), (void) gcpro7) +#define UNGCPRO ((void) 0) + +#else /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */ + +#ifndef DEBUG_GCPRO + +#define GCPRO1(a) \ + { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \ + gcprolist = &gcpro1; } + +#define GCPRO2(a, b) \ + { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \ + gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \ + gcprolist = &gcpro2; } + +#define GCPRO3(a, b, c) \ + { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \ + gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \ + gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \ + gcprolist = &gcpro3; } + +#define GCPRO4(a, b, c, d) \ + { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \ + gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \ + gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \ + gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1; \ + gcprolist = &gcpro4; } + +#define GCPRO5(a, b, c, d, e) \ + { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \ + gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \ + gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \ + gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1; \ + gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1; \ + gcprolist = &gcpro5; } + +#define GCPRO6(a, b, c, d, e, f) \ + { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \ + gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \ + gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \ + gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1; \ + gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1; \ + gcpro6.next = &gcpro5; gcpro6.var = &(f); gcpro6.nvars = 1; \ + gcprolist = &gcpro6; } + +#define GCPRO7(a, b, c, d, e, f, g) \ + { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \ + gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \ + gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \ + gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1; \ + gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1; \ + gcpro6.next = &gcpro5; gcpro6.var = &(f); gcpro6.nvars = 1; \ + gcpro7.next = &gcpro6; gcpro7.var = &(g); gcpro7.nvars = 1; \ + gcprolist = &gcpro7; } + +#define UNGCPRO (gcprolist = gcpro1.next) + +#else /* !DEBUG_GCPRO */ + +extern int gcpro_level; + +#define GCPRO1(a) \ + { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \ + gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \ + gcpro1.level = gcpro_level++; \ + gcprolist = &gcpro1; } + +#define GCPRO2(a, b) \ + { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \ + gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \ + gcpro1.level = gcpro_level; \ + gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \ + gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \ + gcpro2.level = gcpro_level++; \ + gcprolist = &gcpro2; } + +#define GCPRO3(a, b, c) \ + { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \ + gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \ + gcpro1.level = gcpro_level; \ + gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \ + gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \ + gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \ + gcpro3.name = __FILE__; gcpro3.lineno = __LINE__; gcpro3.idx = 3; \ + gcpro3.level = gcpro_level++; \ + gcprolist = &gcpro3; } + +#define GCPRO4(a, b, c, d) \ + { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \ + gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \ + gcpro1.level = gcpro_level; \ + gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \ + gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \ + gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \ + gcpro3.name = __FILE__; gcpro3.lineno = __LINE__; gcpro3.idx = 3; \ + gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1; \ + gcpro4.name = __FILE__; gcpro4.lineno = __LINE__; gcpro4.idx = 4; \ + gcpro4.level = gcpro_level++; \ + gcprolist = &gcpro4; } + +#define GCPRO5(a, b, c, d, e) \ + { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \ + gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \ + gcpro1.level = gcpro_level; \ + gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \ + gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \ + gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \ + gcpro3.name = __FILE__; gcpro3.lineno = __LINE__; gcpro3.idx = 3; \ + gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1; \ + gcpro4.name = __FILE__; gcpro4.lineno = __LINE__; gcpro4.idx = 4; \ + gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1; \ + gcpro5.name = __FILE__; gcpro5.lineno = __LINE__; gcpro5.idx = 5; \ + gcpro5.level = gcpro_level++; \ + gcprolist = &gcpro5; } + +#define GCPRO6(a, b, c, d, e, f) \ + { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \ + gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \ + gcpro1.level = gcpro_level; \ + gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \ + gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \ + gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \ + gcpro3.name = __FILE__; gcpro3.lineno = __LINE__; gcpro3.idx = 3; \ + gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1; \ + gcpro4.name = __FILE__; gcpro4.lineno = __LINE__; gcpro4.idx = 4; \ + gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1; \ + gcpro5.name = __FILE__; gcpro5.lineno = __LINE__; gcpro5.idx = 5; \ + gcpro6.next = &gcpro5; gcpro6.var = &(f); gcpro6.nvars = 1; \ + gcpro6.name = __FILE__; gcpro6.lineno = __LINE__; gcpro6.idx = 6; \ + gcpro6.level = gcpro_level++; \ + gcprolist = &gcpro6; } + +#define GCPRO7(a, b, c, d, e, f, g) \ + { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \ + gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \ + gcpro1.level = gcpro_level; \ + gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \ + gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \ + gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \ + gcpro3.name = __FILE__; gcpro3.lineno = __LINE__; gcpro3.idx = 3; \ + gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1; \ + gcpro4.name = __FILE__; gcpro4.lineno = __LINE__; gcpro4.idx = 4; \ + gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1; \ + gcpro5.name = __FILE__; gcpro5.lineno = __LINE__; gcpro5.idx = 5; \ + gcpro6.next = &gcpro5; gcpro6.var = &(f); gcpro6.nvars = 1; \ + gcpro6.name = __FILE__; gcpro6.lineno = __LINE__; gcpro6.idx = 6; \ + gcpro7.next = &gcpro6; gcpro7.var = &(g); gcpro7.nvars = 1; \ + gcpro7.name = __FILE__; gcpro7.lineno = __LINE__; gcpro7.idx = 7; \ + gcpro7.level = gcpro_level++; \ + gcprolist = &gcpro7; } + +#define UNGCPRO \ + (--gcpro_level != gcpro1.level \ + ? emacs_abort () \ + : (void) (gcprolist = gcpro1.next)) + +#endif /* DEBUG_GCPRO */ +#endif /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */ + + +/* Evaluate expr, UNGCPRO, and then return the value of expr. */ +#define RETURN_UNGCPRO(expr) \ + do \ + { \ + Lisp_Object ret_ungc_val; \ + ret_ungc_val = (expr); \ + UNGCPRO; \ + return ret_ungc_val; \ + } \ + while (false) + +/* Call staticpro (&var) to protect static variable `var'. */ + +void staticpro (Lisp_Object *); + +/* Forward declarations for prototypes. */ +struct window; +struct frame; + +/* Copy COUNT Lisp_Objects from ARGS to contents of V starting from OFFSET. */ + +INLINE void +vcopy (Lisp_Object v, ptrdiff_t offset, Lisp_Object *args, ptrdiff_t count) +{ + eassert (0 <= offset && 0 <= count && offset + count <= ASIZE (v)); + memcpy (XVECTOR (v)->contents + offset, args, count * sizeof *args); +} + +/* Functions to modify hash tables. */ + +INLINE void +set_hash_key_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) +{ + gc_aset (h->key_and_value, 2 * idx, val); +} + +INLINE void +set_hash_value_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) +{ + gc_aset (h->key_and_value, 2 * idx + 1, val); +} + +/* Use these functions to set Lisp_Object + or pointer slots of struct Lisp_Symbol. */ + +INLINE void +set_symbol_function (Lisp_Object sym, Lisp_Object function) +{ + XSYMBOL (sym)->function = function; +} + +INLINE void +set_symbol_plist (Lisp_Object sym, Lisp_Object plist) +{ + XSYMBOL (sym)->plist = plist; +} + +INLINE void +set_symbol_next (Lisp_Object sym, struct Lisp_Symbol *next) +{ + XSYMBOL (sym)->next = next; +} + +/* Buffer-local (also frame-local) variable access functions. */ + +INLINE int +blv_found (struct Lisp_Buffer_Local_Value *blv) +{ + eassert (blv->found == !EQ (blv->defcell, blv->valcell)); + return blv->found; +} + +/* Set overlay's property list. */ + +INLINE void +set_overlay_plist (Lisp_Object overlay, Lisp_Object plist) +{ + XOVERLAY (overlay)->plist = plist; +} + +/* Get text properties of S. */ + +INLINE INTERVAL +string_intervals (Lisp_Object s) +{ + return XSTRING (s)->intervals; +} + +/* Set text properties of S to I. */ + +INLINE void +set_string_intervals (Lisp_Object s, INTERVAL i) +{ + XSTRING (s)->intervals = i; +} + +/* Set a Lisp slot in TABLE to VAL. Most code should use this instead + of setting slots directly. */ + +INLINE void +set_char_table_defalt (Lisp_Object table, Lisp_Object val) +{ + XCHAR_TABLE (table)->defalt = val; +} +INLINE void +set_char_table_purpose (Lisp_Object table, Lisp_Object val) +{ + XCHAR_TABLE (table)->purpose = val; +} + +/* Set different slots in (sub)character tables. */ + +INLINE void +set_char_table_extras (Lisp_Object table, ptrdiff_t idx, Lisp_Object val) +{ + eassert (0 <= idx && idx < CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (table))); + XCHAR_TABLE (table)->extras[idx] = val; +} + +INLINE void +set_char_table_contents (Lisp_Object table, ptrdiff_t idx, Lisp_Object val) +{ + eassert (0 <= idx && idx < (1 << CHARTAB_SIZE_BITS_0)); + XCHAR_TABLE (table)->contents[idx] = val; +} + +INLINE void +set_sub_char_table_contents (Lisp_Object table, ptrdiff_t idx, Lisp_Object val) +{ + XSUB_CHAR_TABLE (table)->contents[idx] = val; +} + +/* Defined in data.c. */ +extern Lisp_Object indirect_function (Lisp_Object); +extern Lisp_Object find_symbol_value (Lisp_Object); +enum Arith_Comparison { + ARITH_EQUAL, + ARITH_NOTEQUAL, + ARITH_LESS, + ARITH_GRTR, + ARITH_LESS_OR_EQUAL, + ARITH_GRTR_OR_EQUAL +}; +extern Lisp_Object arithcompare (Lisp_Object num1, Lisp_Object num2, + enum Arith_Comparison comparison); + +/* Convert the integer I to an Emacs representation, either the integer + itself, or a cons of two or three integers, or if all else fails a float. + I should not have side effects. */ +#define INTEGER_TO_CONS(i) \ + (! FIXNUM_OVERFLOW_P (i) \ + ? make_number (i) \ + : ! ((FIXNUM_OVERFLOW_P (INTMAX_MIN >> 16) \ + || FIXNUM_OVERFLOW_P (UINTMAX_MAX >> 16)) \ + && FIXNUM_OVERFLOW_P ((i) >> 16)) \ + ? Fcons (make_number ((i) >> 16), make_number ((i) & 0xffff)) \ + : ! ((FIXNUM_OVERFLOW_P (INTMAX_MIN >> 16 >> 24) \ + || FIXNUM_OVERFLOW_P (UINTMAX_MAX >> 16 >> 24)) \ + && FIXNUM_OVERFLOW_P ((i) >> 16 >> 24)) \ + ? Fcons (make_number ((i) >> 16 >> 24), \ + Fcons (make_number ((i) >> 16 & 0xffffff), \ + make_number ((i) & 0xffff))) \ + : make_float (i)) + +/* Convert the Emacs representation CONS back to an integer of type + TYPE, storing the result the variable VAR. Signal an error if CONS + is not a valid representation or is out of range for TYPE. */ +#define CONS_TO_INTEGER(cons, type, var) \ + (TYPE_SIGNED (type) \ + ? ((var) = cons_to_signed (cons, TYPE_MINIMUM (type), TYPE_MAXIMUM (type))) \ + : ((var) = cons_to_unsigned (cons, TYPE_MAXIMUM (type)))) +extern intmax_t cons_to_signed (Lisp_Object, intmax_t, intmax_t); +extern uintmax_t cons_to_unsigned (Lisp_Object, uintmax_t); + +extern struct Lisp_Symbol *indirect_variable (struct Lisp_Symbol *); +extern _Noreturn void args_out_of_range (Lisp_Object, Lisp_Object); +extern _Noreturn void args_out_of_range_3 (Lisp_Object, Lisp_Object, + Lisp_Object); +extern Lisp_Object do_symval_forwarding (union Lisp_Fwd *); +extern void set_internal (Lisp_Object, Lisp_Object, Lisp_Object, bool); +extern void syms_of_data (void); +extern void swap_in_global_binding (struct Lisp_Symbol *); + +/* Defined in cmds.c */ +extern void syms_of_cmds (void); +extern void keys_of_cmds (void); + +/* Defined in coding.c. */ +extern Lisp_Object detect_coding_system (const unsigned char *, ptrdiff_t, + ptrdiff_t, bool, bool, Lisp_Object); +extern void init_coding (void); +extern void init_coding_once (void); +extern void syms_of_coding (void); + +/* Defined in character.c. */ +extern ptrdiff_t chars_in_text (const unsigned char *, ptrdiff_t); +extern ptrdiff_t multibyte_chars_in_text (const unsigned char *, ptrdiff_t); +extern void syms_of_character (void); + +/* Defined in charset.c. */ +extern void init_charset (void); +extern void init_charset_once (void); +extern void syms_of_charset (void); +/* Structure forward declarations. */ +struct charset; + +/* Defined in syntax.c. */ +extern void init_syntax_once (void); +extern void syms_of_syntax (void); + +/* Defined in fns.c. */ +enum { NEXT_ALMOST_PRIME_LIMIT = 11 }; +extern EMACS_INT next_almost_prime (EMACS_INT) ATTRIBUTE_CONST; +extern Lisp_Object larger_vector (Lisp_Object, ptrdiff_t, ptrdiff_t); +extern void sweep_weak_hash_tables (void); +EMACS_UINT hash_string (char const *, ptrdiff_t); +EMACS_UINT sxhash (Lisp_Object, int); +Lisp_Object make_hash_table (struct hash_table_test, Lisp_Object, Lisp_Object, + Lisp_Object, Lisp_Object); +ptrdiff_t hash_lookup (struct Lisp_Hash_Table *, Lisp_Object, EMACS_UINT *); +ptrdiff_t hash_put (struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object, + EMACS_UINT); +extern struct hash_table_test hashtest_eql, hashtest_equal; +extern void validate_subarray (Lisp_Object, Lisp_Object, Lisp_Object, + ptrdiff_t, ptrdiff_t *, ptrdiff_t *); +extern Lisp_Object substring_both (Lisp_Object, ptrdiff_t, ptrdiff_t, + ptrdiff_t, ptrdiff_t); +extern Lisp_Object merge (Lisp_Object, Lisp_Object, Lisp_Object); +extern Lisp_Object do_yes_or_no_p (Lisp_Object); +extern Lisp_Object concat2 (Lisp_Object, Lisp_Object); +extern Lisp_Object concat3 (Lisp_Object, Lisp_Object, Lisp_Object); +extern Lisp_Object nconc2 (Lisp_Object, Lisp_Object); +extern Lisp_Object assq_no_quit (Lisp_Object, Lisp_Object); +extern Lisp_Object assoc_no_quit (Lisp_Object, Lisp_Object); +extern void clear_string_char_byte_cache (void); +extern ptrdiff_t string_char_to_byte (Lisp_Object, ptrdiff_t); +extern ptrdiff_t string_byte_to_char (Lisp_Object, ptrdiff_t); +extern Lisp_Object string_to_multibyte (Lisp_Object); +extern Lisp_Object string_make_unibyte (Lisp_Object); +extern void syms_of_fns (void); + +/* Defined in floatfns.c. */ +extern void syms_of_floatfns (void); +extern Lisp_Object fmod_float (Lisp_Object x, Lisp_Object y); + +/* Defined in fringe.c. */ +extern void syms_of_fringe (void); +extern void init_fringe (void); +#ifdef HAVE_WINDOW_SYSTEM +extern void mark_fringe_data (void); +extern void init_fringe_once (void); +#endif /* HAVE_WINDOW_SYSTEM */ + +/* Defined in image.c. */ +extern int x_bitmap_mask (struct frame *, ptrdiff_t); +extern void reset_image_types (void); +extern void syms_of_image (void); + +/* Defined in insdel.c. */ +extern void move_gap_both (ptrdiff_t, ptrdiff_t); +extern _Noreturn void buffer_overflow (void); +extern void make_gap (ptrdiff_t); +extern void make_gap_1 (struct buffer *, ptrdiff_t); +extern ptrdiff_t copy_text (const unsigned char *, unsigned char *, + ptrdiff_t, bool, bool); +extern int count_combining_before (const unsigned char *, + ptrdiff_t, ptrdiff_t, ptrdiff_t); +extern int count_combining_after (const unsigned char *, + ptrdiff_t, ptrdiff_t, ptrdiff_t); +extern void insert (const char *, ptrdiff_t); +extern void insert_and_inherit (const char *, ptrdiff_t); +extern void insert_1_both (const char *, ptrdiff_t, ptrdiff_t, + bool, bool, bool); +extern void insert_from_gap (ptrdiff_t, ptrdiff_t, bool text_at_gap_tail); +extern void insert_from_string (Lisp_Object, ptrdiff_t, ptrdiff_t, + ptrdiff_t, ptrdiff_t, bool); +extern void insert_from_buffer (struct buffer *, ptrdiff_t, ptrdiff_t, bool); +extern void insert_char (int); +extern void insert_string (const char *); +extern void insert_before_markers (const char *, ptrdiff_t); +extern void insert_before_markers_and_inherit (const char *, ptrdiff_t); +extern void insert_from_string_before_markers (Lisp_Object, ptrdiff_t, + ptrdiff_t, ptrdiff_t, + ptrdiff_t, bool); +extern void del_range (ptrdiff_t, ptrdiff_t); +extern Lisp_Object del_range_1 (ptrdiff_t, ptrdiff_t, bool, bool); +extern void del_range_byte (ptrdiff_t, ptrdiff_t, bool); +extern void del_range_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, bool); +extern Lisp_Object del_range_2 (ptrdiff_t, ptrdiff_t, + ptrdiff_t, ptrdiff_t, bool); +extern void modify_text (ptrdiff_t, ptrdiff_t); +extern void prepare_to_modify_buffer (ptrdiff_t, ptrdiff_t, ptrdiff_t *); +extern void prepare_to_modify_buffer_1 (ptrdiff_t, ptrdiff_t, ptrdiff_t *); +extern void invalidate_buffer_caches (struct buffer *, ptrdiff_t, ptrdiff_t); +extern void signal_after_change (ptrdiff_t, ptrdiff_t, ptrdiff_t); +extern void adjust_after_insert (ptrdiff_t, ptrdiff_t, ptrdiff_t, + ptrdiff_t, ptrdiff_t); +extern void adjust_markers_for_delete (ptrdiff_t, ptrdiff_t, + ptrdiff_t, ptrdiff_t); +extern void replace_range (ptrdiff_t, ptrdiff_t, Lisp_Object, bool, bool, bool); +extern void replace_range_2 (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, + const char *, ptrdiff_t, ptrdiff_t, bool); +extern void syms_of_insdel (void); + +/* Defined in dispnew.c. */ +#if (defined PROFILING \ + && (defined __FreeBSD__ || defined GNU_LINUX || defined __MINGW32__)) +_Noreturn void __executable_start (void); +#endif +extern Lisp_Object Vwindow_system; +extern Lisp_Object sit_for (Lisp_Object, bool, int); + +/* Defined in xdisp.c. */ +extern bool noninteractive_need_newline; +extern Lisp_Object echo_area_buffer[2]; +extern void add_to_log (const char *, Lisp_Object, Lisp_Object); +extern void check_message_stack (void); +extern void setup_echo_area_for_printing (bool); +extern bool push_message (void); +extern void pop_message_unwind (void); +extern Lisp_Object restore_message_unwind (Lisp_Object); +extern void restore_message (void); +extern Lisp_Object current_message (void); +extern void clear_message (bool, bool); +extern void message (const char *, ...) ATTRIBUTE_FORMAT_PRINTF (1, 2); +extern void message1 (const char *); +extern void message1_nolog (const char *); +extern void message3 (Lisp_Object); +extern void message3_nolog (Lisp_Object); +extern void message_dolog (const char *, ptrdiff_t, bool, bool); +extern void message_with_string (const char *, Lisp_Object, bool); +extern void message_log_maybe_newline (void); +extern void update_echo_area (void); +extern void truncate_echo_area (ptrdiff_t); +extern void redisplay (void); + +void set_frame_cursor_types (struct frame *, Lisp_Object); +extern void syms_of_xdisp (void); +extern void init_xdisp (void); +extern Lisp_Object safe_eval (Lisp_Object); +extern bool pos_visible_p (struct window *, ptrdiff_t, int *, + int *, int *, int *, int *, int *); + +/* Defined in xsettings.c. */ +extern void syms_of_xsettings (void); + +/* Defined in vm-limit.c. */ +extern void memory_warnings (void *, void (*warnfun) (const char *)); + +/* Defined in character.c. */ +extern void parse_str_as_multibyte (const unsigned char *, ptrdiff_t, + ptrdiff_t *, ptrdiff_t *); + +/* Defined in alloc.c. */ +extern void check_pure_size (void); +extern void free_misc (Lisp_Object); +extern void allocate_string_data (struct Lisp_String *, EMACS_INT, EMACS_INT); +extern void malloc_warning (const char *); +extern _Noreturn void memory_full (size_t); +extern _Noreturn void buffer_memory_full (ptrdiff_t); +extern bool survives_gc_p (Lisp_Object); +extern void mark_object (Lisp_Object); +#if defined REL_ALLOC && !defined SYSTEM_MALLOC && !defined HYBRID_MALLOC +extern void refill_memory_reserve (void); +#endif +extern const char *pending_malloc_warning; +extern Lisp_Object zero_vector; +extern Lisp_Object *stack_base; +extern EMACS_INT consing_since_gc; +extern EMACS_INT gc_relative_threshold; +extern EMACS_INT memory_full_cons_threshold; +extern Lisp_Object list1 (Lisp_Object); +extern Lisp_Object list2 (Lisp_Object, Lisp_Object); +extern Lisp_Object list3 (Lisp_Object, Lisp_Object, Lisp_Object); +extern Lisp_Object list4 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); +extern Lisp_Object list5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, + Lisp_Object); +enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}; +extern Lisp_Object listn (enum constype, ptrdiff_t, Lisp_Object, ...); + +/* Build a frequently used 2/3/4-integer lists. */ + +INLINE Lisp_Object +list2i (EMACS_INT x, EMACS_INT y) +{ + return list2 (make_number (x), make_number (y)); +} + +INLINE Lisp_Object +list3i (EMACS_INT x, EMACS_INT y, EMACS_INT w) +{ + return list3 (make_number (x), make_number (y), make_number (w)); +} + +INLINE Lisp_Object +list4i (EMACS_INT x, EMACS_INT y, EMACS_INT w, EMACS_INT h) +{ + return list4 (make_number (x), make_number (y), + make_number (w), make_number (h)); +} + +extern Lisp_Object make_uninit_bool_vector (EMACS_INT); +extern Lisp_Object bool_vector_fill (Lisp_Object, Lisp_Object); +extern _Noreturn void string_overflow (void); +extern Lisp_Object make_string (const char *, ptrdiff_t); +extern Lisp_Object make_formatted_string (char *, const char *, ...) + ATTRIBUTE_FORMAT_PRINTF (2, 3); +extern Lisp_Object make_unibyte_string (const char *, ptrdiff_t); + +/* Make unibyte string from C string when the length isn't known. */ + +INLINE Lisp_Object +build_unibyte_string (const char *str) +{ + return make_unibyte_string (str, strlen (str)); +} + +extern Lisp_Object make_multibyte_string (const char *, ptrdiff_t, ptrdiff_t); +extern Lisp_Object make_event_array (ptrdiff_t, Lisp_Object *); +extern Lisp_Object make_uninit_string (EMACS_INT); +extern Lisp_Object make_uninit_multibyte_string (EMACS_INT, EMACS_INT); +extern Lisp_Object make_string_from_bytes (const char *, ptrdiff_t, ptrdiff_t); +extern Lisp_Object make_specified_string (const char *, + ptrdiff_t, ptrdiff_t, bool); +extern Lisp_Object make_pure_string (const char *, ptrdiff_t, ptrdiff_t, bool); +extern Lisp_Object make_pure_c_string (const char *, ptrdiff_t); + +/* Make a string allocated in pure space, use STR as string data. */ + +INLINE Lisp_Object +build_pure_c_string (const char *str) +{ + return make_pure_c_string (str, strlen (str)); +} + +/* Make a string from the data at STR, treating it as multibyte if the + data warrants. */ + +INLINE Lisp_Object +build_string (const char *str) +{ + return make_string (str, strlen (str)); +} + +extern Lisp_Object pure_cons (Lisp_Object, Lisp_Object); +extern void make_byte_code (struct Lisp_Vector *); +extern struct Lisp_Vector *allocate_vector (EMACS_INT); + +/* Make an uninitialized vector for SIZE objects. NOTE: you must + be sure that GC cannot happen until the vector is completely + initialized. E.g. the following code is likely to crash: + + v = make_uninit_vector (3); + ASET (v, 0, obj0); + ASET (v, 1, Ffunction_can_gc ()); + ASET (v, 2, obj1); */ + +INLINE Lisp_Object +make_uninit_vector (ptrdiff_t size) +{ + Lisp_Object v; + struct Lisp_Vector *p; + + p = allocate_vector (size); + XSETVECTOR (v, p); + return v; +} + +/* Like above, but special for sub char-tables. */ + +INLINE Lisp_Object +make_uninit_sub_char_table (int depth, int min_char) +{ + int slots = SUB_CHAR_TABLE_OFFSET + chartab_size[depth]; + Lisp_Object v = make_uninit_vector (slots); + + XSETPVECTYPE (XVECTOR (v), PVEC_SUB_CHAR_TABLE); + XSUB_CHAR_TABLE (v)->depth = depth; + XSUB_CHAR_TABLE (v)->min_char = min_char; + return v; +} + +extern struct Lisp_Vector *allocate_pseudovector (int, int, int, + enum pvec_type); + +/* Allocate partially initialized pseudovector where all Lisp_Object + slots are set to Qnil but the rest (if any) is left uninitialized. */ + +#define ALLOCATE_PSEUDOVECTOR(type, field, tag) \ + ((type *) allocate_pseudovector (VECSIZE (type), \ + PSEUDOVECSIZE (type, field), \ + PSEUDOVECSIZE (type, field), tag)) + +/* Allocate fully initialized pseudovector where all Lisp_Object + slots are set to Qnil and the rest (if any) is zeroed. */ + +#define ALLOCATE_ZEROED_PSEUDOVECTOR(type, field, tag) \ + ((type *) allocate_pseudovector (VECSIZE (type), \ + PSEUDOVECSIZE (type, field), \ + VECSIZE (type), tag)) + +extern bool gc_in_progress; +extern bool abort_on_gc; +extern Lisp_Object make_float (double); +extern void display_malloc_warning (void); +extern ptrdiff_t inhibit_garbage_collection (void); +extern Lisp_Object make_save_int_int_int (ptrdiff_t, ptrdiff_t, ptrdiff_t); +extern Lisp_Object make_save_obj_obj_obj_obj (Lisp_Object, Lisp_Object, + Lisp_Object, Lisp_Object); +extern Lisp_Object make_save_ptr (void *); +extern Lisp_Object make_save_ptr_int (void *, ptrdiff_t); +extern Lisp_Object make_save_ptr_ptr (void *, void *); +extern Lisp_Object make_save_funcptr_ptr_obj (void (*) (void), void *, + Lisp_Object); +extern Lisp_Object make_save_memory (Lisp_Object *, ptrdiff_t); +extern void free_save_value (Lisp_Object); +extern Lisp_Object build_overlay (Lisp_Object, Lisp_Object, Lisp_Object); +extern void free_marker (Lisp_Object); +extern void free_cons (struct Lisp_Cons *); +extern void init_alloc_once (void); +extern void init_alloc (void); +extern void syms_of_alloc (void); +extern struct buffer * allocate_buffer (void); +extern int valid_lisp_object_p (Lisp_Object); +extern int relocatable_string_data_p (const char *); +#ifdef GC_CHECK_CONS_LIST +extern void check_cons_list (void); +#else +INLINE void (check_cons_list) (void) { lisp_h_check_cons_list (); } +#endif + +#ifdef REL_ALLOC +/* Defined in ralloc.c. */ +extern void *r_alloc (void **, size_t) ATTRIBUTE_ALLOC_SIZE ((2)); +extern void r_alloc_free (void **); +extern void *r_re_alloc (void **, size_t) ATTRIBUTE_ALLOC_SIZE ((2)); +extern void r_alloc_reset_variable (void **, void **); +extern void r_alloc_inhibit_buffer_relocation (int); +#endif + +/* Defined in chartab.c. */ +extern Lisp_Object copy_char_table (Lisp_Object); +extern Lisp_Object char_table_ref_and_range (Lisp_Object, int, + int *, int *); +extern void char_table_set_range (Lisp_Object, int, int, Lisp_Object); +extern void map_char_table (void (*) (Lisp_Object, Lisp_Object, + Lisp_Object), + Lisp_Object, Lisp_Object, Lisp_Object); +extern void map_char_table_for_charset (void (*c_function) (Lisp_Object, Lisp_Object), + Lisp_Object, Lisp_Object, + Lisp_Object, struct charset *, + unsigned, unsigned); +extern Lisp_Object uniprop_table (Lisp_Object); +extern void syms_of_chartab (void); + +/* Defined in print.c. */ +extern Lisp_Object Vprin1_to_string_buffer; +extern void debug_print (Lisp_Object) EXTERNALLY_VISIBLE; +extern void temp_output_buffer_setup (const char *); +extern int print_level; +extern void write_string (const char *); +extern void print_error_message (Lisp_Object, Lisp_Object, const char *, + Lisp_Object); +extern Lisp_Object internal_with_output_to_temp_buffer + (const char *, Lisp_Object (*) (Lisp_Object), Lisp_Object); +#define FLOAT_TO_STRING_BUFSIZE 350 +extern int float_to_string (char *, double); +extern void init_print_once (void); +extern void syms_of_print (void); + +/* Defined in doprnt.c. */ +extern ptrdiff_t doprnt (char *, ptrdiff_t, const char *, const char *, + va_list); +extern ptrdiff_t esprintf (char *, char const *, ...) + ATTRIBUTE_FORMAT_PRINTF (2, 3); +extern ptrdiff_t exprintf (char **, ptrdiff_t *, char const *, ptrdiff_t, + char const *, ...) + ATTRIBUTE_FORMAT_PRINTF (5, 6); +extern ptrdiff_t evxprintf (char **, ptrdiff_t *, char const *, ptrdiff_t, + char const *, va_list) + ATTRIBUTE_FORMAT_PRINTF (5, 0); + +/* Defined in lread.c. */ +extern Lisp_Object check_obarray (Lisp_Object); +extern Lisp_Object intern_1 (const char *, ptrdiff_t); +extern Lisp_Object intern_c_string_1 (const char *, ptrdiff_t); +extern Lisp_Object intern_driver (Lisp_Object, Lisp_Object, Lisp_Object); +extern void init_symbol (Lisp_Object, Lisp_Object); +extern Lisp_Object oblookup (Lisp_Object, const char *, ptrdiff_t, ptrdiff_t); +INLINE void +LOADHIST_ATTACH (Lisp_Object x) +{ + if (initialized) + Vcurrent_load_list = Fcons (x, Vcurrent_load_list); +} +extern int openp (Lisp_Object, Lisp_Object, Lisp_Object, + Lisp_Object *, Lisp_Object, bool); +extern Lisp_Object string_to_number (char const *, int, bool); +extern void map_obarray (Lisp_Object, void (*) (Lisp_Object, Lisp_Object), + Lisp_Object); +extern void dir_warning (const char *, Lisp_Object); +extern void init_obarray (void); +extern void init_lread (void); +extern void syms_of_lread (void); + +INLINE Lisp_Object +intern (const char *str) +{ + return intern_1 (str, strlen (str)); +} + +INLINE Lisp_Object +intern_c_string (const char *str) +{ + return intern_c_string_1 (str, strlen (str)); +} + +/* Defined in eval.c. */ +extern EMACS_INT lisp_eval_depth; +extern Lisp_Object Vautoload_queue; +extern Lisp_Object Vrun_hooks; +extern Lisp_Object Vsignaling_function; +extern Lisp_Object inhibit_lisp_code; +extern struct handler *handlerlist; + +/* To run a normal hook, use the appropriate function from the list below. + The calling convention: + + if (!NILP (Vrun_hooks)) + call1 (Vrun_hooks, Qmy_funny_hook); + + should no longer be used. */ +extern void run_hook (Lisp_Object); +extern void run_hook_with_args_2 (Lisp_Object, Lisp_Object, Lisp_Object); +extern Lisp_Object run_hook_with_args (ptrdiff_t nargs, Lisp_Object *args, + Lisp_Object (*funcall) + (ptrdiff_t nargs, Lisp_Object *args)); +extern _Noreturn void xsignal (Lisp_Object, Lisp_Object); +extern _Noreturn void xsignal0 (Lisp_Object); +extern _Noreturn void xsignal1 (Lisp_Object, Lisp_Object); +extern _Noreturn void xsignal2 (Lisp_Object, Lisp_Object, Lisp_Object); +extern _Noreturn void xsignal3 (Lisp_Object, Lisp_Object, Lisp_Object, + Lisp_Object); +extern _Noreturn void signal_error (const char *, Lisp_Object); +extern Lisp_Object eval_sub (Lisp_Object form); +extern Lisp_Object apply1 (Lisp_Object, Lisp_Object); +extern Lisp_Object call0 (Lisp_Object); +extern Lisp_Object call1 (Lisp_Object, Lisp_Object); +extern Lisp_Object call2 (Lisp_Object, Lisp_Object, Lisp_Object); +extern Lisp_Object call3 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); +extern Lisp_Object call4 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); +extern Lisp_Object call5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); +extern Lisp_Object call6 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); +extern Lisp_Object call7 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); +extern Lisp_Object internal_catch (Lisp_Object, Lisp_Object (*) (Lisp_Object), Lisp_Object); +extern Lisp_Object internal_lisp_condition_case (Lisp_Object, Lisp_Object, Lisp_Object); +extern Lisp_Object internal_condition_case (Lisp_Object (*) (void), Lisp_Object, Lisp_Object (*) (Lisp_Object)); +extern Lisp_Object internal_condition_case_1 (Lisp_Object (*) (Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object)); +extern Lisp_Object internal_condition_case_2 (Lisp_Object (*) (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object)); +extern Lisp_Object internal_condition_case_n + (Lisp_Object (*) (ptrdiff_t, Lisp_Object *), ptrdiff_t, Lisp_Object *, + Lisp_Object, Lisp_Object (*) (Lisp_Object, ptrdiff_t, Lisp_Object *)); +extern void specbind (Lisp_Object, Lisp_Object); +extern void record_unwind_protect (void (*) (Lisp_Object), Lisp_Object); +extern void record_unwind_protect_ptr (void (*) (void *), void *); +extern void record_unwind_protect_int (void (*) (int), int); +extern void record_unwind_protect_void (void (*) (void)); +extern void record_unwind_protect_nothing (void); +extern void clear_unwind_protect (ptrdiff_t); +extern void set_unwind_protect (ptrdiff_t, void (*) (Lisp_Object), Lisp_Object); +extern void set_unwind_protect_ptr (ptrdiff_t, void (*) (void *), void *); +extern Lisp_Object unbind_to (ptrdiff_t, Lisp_Object); +extern _Noreturn void error (const char *, ...) ATTRIBUTE_FORMAT_PRINTF (1, 2); +extern _Noreturn void verror (const char *, va_list) + ATTRIBUTE_FORMAT_PRINTF (1, 0); +extern void un_autoload (Lisp_Object); +extern Lisp_Object call_debugger (Lisp_Object arg); +extern void init_eval_once (void); +extern Lisp_Object safe_call (ptrdiff_t, Lisp_Object, ...); +extern Lisp_Object safe_call1 (Lisp_Object, Lisp_Object); +extern Lisp_Object safe_call2 (Lisp_Object, Lisp_Object, Lisp_Object); +extern void init_eval (void); +extern void syms_of_eval (void); +extern void unwind_body (Lisp_Object); +extern ptrdiff_t record_in_backtrace (Lisp_Object, Lisp_Object *, ptrdiff_t); +extern void mark_specpdl (void); +extern void get_backtrace (Lisp_Object array); +Lisp_Object backtrace_top_function (void); +extern bool let_shadows_buffer_binding_p (struct Lisp_Symbol *symbol); +extern bool let_shadows_global_binding_p (Lisp_Object symbol); + + +/* Defined in editfns.c. */ +extern void insert1 (Lisp_Object); +extern Lisp_Object format2 (const char *, Lisp_Object, Lisp_Object); +extern Lisp_Object save_excursion_save (void); +extern Lisp_Object save_restriction_save (void); +extern void save_excursion_restore (Lisp_Object); +extern void save_restriction_restore (Lisp_Object); +extern _Noreturn void time_overflow (void); +extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, bool); +extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, + ptrdiff_t, bool); +extern void init_editfns (void); +extern void syms_of_editfns (void); + +/* Defined in buffer.c. */ +extern bool mouse_face_overlay_overlaps (Lisp_Object); +extern _Noreturn void nsberror (Lisp_Object); +extern void adjust_overlays_for_insert (ptrdiff_t, ptrdiff_t); +extern void adjust_overlays_for_delete (ptrdiff_t, ptrdiff_t); +extern void fix_start_end_in_overlays (ptrdiff_t, ptrdiff_t); +extern void report_overlay_modification (Lisp_Object, Lisp_Object, bool, + Lisp_Object, Lisp_Object, Lisp_Object); +extern bool overlay_touches_p (ptrdiff_t); +extern Lisp_Object other_buffer_safely (Lisp_Object); +extern Lisp_Object get_truename_buffer (Lisp_Object); +extern void init_buffer_once (void); +extern void init_buffer (int); +extern void syms_of_buffer (void); +extern void keys_of_buffer (void); + +/* Defined in marker.c. */ + +extern ptrdiff_t marker_position (Lisp_Object); +extern ptrdiff_t marker_byte_position (Lisp_Object); +extern void clear_charpos_cache (struct buffer *); +extern ptrdiff_t buf_charpos_to_bytepos (struct buffer *, ptrdiff_t); +extern ptrdiff_t buf_bytepos_to_charpos (struct buffer *, ptrdiff_t); +extern void unchain_marker (struct Lisp_Marker *marker); +extern Lisp_Object set_marker_restricted (Lisp_Object, Lisp_Object, Lisp_Object); +extern Lisp_Object set_marker_both (Lisp_Object, Lisp_Object, ptrdiff_t, ptrdiff_t); +extern Lisp_Object set_marker_restricted_both (Lisp_Object, Lisp_Object, + ptrdiff_t, ptrdiff_t); +extern Lisp_Object build_marker (struct buffer *, ptrdiff_t, ptrdiff_t); +extern void syms_of_marker (void); + +/* Defined in fileio.c. */ + +extern Lisp_Object expand_and_dir_to_file (Lisp_Object, Lisp_Object); +extern Lisp_Object write_region (Lisp_Object, Lisp_Object, Lisp_Object, + Lisp_Object, Lisp_Object, Lisp_Object, + Lisp_Object, int); +extern void close_file_unwind (int); +extern void fclose_unwind (void *); +extern void restore_point_unwind (Lisp_Object); +extern _Noreturn void report_file_errno (const char *, Lisp_Object, int); +extern _Noreturn void report_file_error (const char *, Lisp_Object); +extern bool internal_delete_file (Lisp_Object); +extern Lisp_Object emacs_readlinkat (int, const char *); +extern bool file_directory_p (const char *); +extern bool file_accessible_directory_p (Lisp_Object); +extern void init_fileio (void); +extern void syms_of_fileio (void); +extern Lisp_Object make_temp_name (Lisp_Object, bool); + +/* Defined in search.c. */ +extern void shrink_regexp_cache (void); +extern void restore_search_regs (void); +extern void record_unwind_save_match_data (void); +struct re_registers; +extern struct re_pattern_buffer *compile_pattern (Lisp_Object, + struct re_registers *, + Lisp_Object, bool, bool); +extern ptrdiff_t fast_string_match_internal (Lisp_Object, Lisp_Object, + Lisp_Object); + +INLINE ptrdiff_t +fast_string_match (Lisp_Object regexp, Lisp_Object string) +{ + return fast_string_match_internal (regexp, string, Qnil); +} + +INLINE ptrdiff_t +fast_string_match_ignore_case (Lisp_Object regexp, Lisp_Object string) +{ + return fast_string_match_internal (regexp, string, Vascii_canon_table); +} + +extern ptrdiff_t fast_c_string_match_ignore_case (Lisp_Object, const char *, + ptrdiff_t); +extern ptrdiff_t fast_looking_at (Lisp_Object, ptrdiff_t, ptrdiff_t, + ptrdiff_t, ptrdiff_t, Lisp_Object); +extern ptrdiff_t find_newline (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, + ptrdiff_t, ptrdiff_t *, ptrdiff_t *, bool); +extern ptrdiff_t scan_newline (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, + ptrdiff_t, bool); +extern ptrdiff_t scan_newline_from_point (ptrdiff_t, ptrdiff_t *, ptrdiff_t *); +extern ptrdiff_t find_newline_no_quit (ptrdiff_t, ptrdiff_t, + ptrdiff_t, ptrdiff_t *); +extern ptrdiff_t find_before_next_newline (ptrdiff_t, ptrdiff_t, + ptrdiff_t, ptrdiff_t *); +extern void syms_of_search (void); +extern void clear_regexp_cache (void); + +/* Defined in minibuf.c. */ + +extern Lisp_Object Vminibuffer_list; +extern Lisp_Object last_minibuf_string; +extern Lisp_Object get_minibuffer (EMACS_INT); +extern void init_minibuf_once (void); +extern void syms_of_minibuf (void); + +/* Defined in callint.c. */ + +extern void syms_of_callint (void); + +/* Defined in casefiddle.c. */ + +extern void syms_of_casefiddle (void); +extern void keys_of_casefiddle (void); + +/* Defined in casetab.c. */ + +extern void init_casetab_once (void); +extern void syms_of_casetab (void); + +/* Defined in keyboard.c. */ + +extern Lisp_Object echo_message_buffer; +extern struct kboard *echo_kboard; +extern void cancel_echoing (void); +extern Lisp_Object last_undo_boundary; +extern bool input_pending; +#ifdef HAVE_STACK_OVERFLOW_HANDLING +extern sigjmp_buf return_to_command_loop; +#endif +extern Lisp_Object menu_bar_items (Lisp_Object); +extern Lisp_Object tool_bar_items (Lisp_Object, int *); +extern void discard_mouse_events (void); +#ifdef USABLE_SIGIO +void handle_input_available_signal (int); +#endif +extern Lisp_Object pending_funcalls; +extern bool detect_input_pending (void); +extern bool detect_input_pending_ignore_squeezables (void); +extern bool detect_input_pending_run_timers (bool); +extern void safe_run_hooks (Lisp_Object); +extern void cmd_error_internal (Lisp_Object, const char *); +extern Lisp_Object command_loop_1 (void); +extern Lisp_Object read_menu_command (void); +extern Lisp_Object recursive_edit_1 (void); +extern void record_auto_save (void); +extern void force_auto_save_soon (void); +extern void init_keyboard (void); +extern void syms_of_keyboard (void); +extern void keys_of_keyboard (void); + +/* Defined in indent.c. */ +extern ptrdiff_t current_column (void); +extern void invalidate_current_column (void); +extern bool indented_beyond_p (ptrdiff_t, ptrdiff_t, EMACS_INT); +extern void syms_of_indent (void); + +/* Defined in frame.c. */ +extern void store_frame_param (struct frame *, Lisp_Object, Lisp_Object); +extern void store_in_alist (Lisp_Object *, Lisp_Object, Lisp_Object); +extern Lisp_Object do_switch_frame (Lisp_Object, int, int, Lisp_Object); +extern Lisp_Object get_frame_param (struct frame *, Lisp_Object); +extern void frames_discard_buffer (Lisp_Object); +extern void syms_of_frame (void); + +/* Defined in emacs.c. */ +extern char **initial_argv; +extern int initial_argc; +#if defined (HAVE_X_WINDOWS) || defined (HAVE_NS) +extern bool display_arg; +#endif +extern Lisp_Object decode_env_path (const char *, const char *, bool); +extern Lisp_Object empty_unibyte_string, empty_multibyte_string; +extern _Noreturn void terminate_due_to_signal (int, int); +#ifdef WINDOWSNT +extern Lisp_Object Vlibrary_cache; +#endif +#if HAVE_SETLOCALE +void fixup_locale (void); +void synchronize_system_messages_locale (void); +void synchronize_system_time_locale (void); +#else +INLINE void fixup_locale (void) {} +INLINE void synchronize_system_messages_locale (void) {} +INLINE void synchronize_system_time_locale (void) {} +#endif +extern void shut_down_emacs (int, Lisp_Object); + +/* True means don't do interactive redisplay and don't change tty modes. */ +extern bool noninteractive; + +/* True means remove site-lisp directories from load-path. */ +extern bool no_site_lisp; + +/* Pipe used to send exit notification to the daemon parent at + startup. On Windows, we use a kernel event instead. */ +#ifndef WINDOWSNT +extern int daemon_pipe[2]; +#define IS_DAEMON (daemon_pipe[1] != 0) +#define DAEMON_RUNNING (daemon_pipe[1] >= 0) +#else /* WINDOWSNT */ +extern void *w32_daemon_event; +#define IS_DAEMON (w32_daemon_event != NULL) +#define DAEMON_RUNNING (w32_daemon_event != INVALID_HANDLE_VALUE) +#endif + +/* True if handling a fatal error already. */ +extern bool fatal_error_in_progress; + +/* True means don't do use window-system-specific display code. */ +extern bool inhibit_window_system; +/* True means that a filter or a sentinel is running. */ +extern bool running_asynch_code; + +/* Defined in process.c. */ +extern void kill_buffer_processes (Lisp_Object); +extern int wait_reading_process_output (intmax_t, int, int, bool, Lisp_Object, + struct Lisp_Process *, int); +/* Max value for the first argument of wait_reading_process_output. */ +#if __GNUC__ == 3 || (__GNUC__ == 4 && __GNUC_MINOR__ <= 5) +/* Work around a bug in GCC 3.4.2, known to be fixed in GCC 4.6.3. + The bug merely causes a bogus warning, but the warning is annoying. */ +# define WAIT_READING_MAX min (TYPE_MAXIMUM (time_t), INTMAX_MAX) +#else +# define WAIT_READING_MAX INTMAX_MAX +#endif +#ifdef HAVE_TIMERFD +extern void add_timer_wait_descriptor (int); +#endif +extern void add_keyboard_wait_descriptor (int); +extern void delete_keyboard_wait_descriptor (int); +#ifdef HAVE_GPM +extern void add_gpm_wait_descriptor (int); +extern void delete_gpm_wait_descriptor (int); +#endif +extern void init_process_emacs (void); +extern void syms_of_process (void); +extern void setup_process_coding_systems (Lisp_Object); + +/* Defined in callproc.c. */ +#ifndef DOS_NT + _Noreturn +#endif +extern int child_setup (int, int, int, char **, bool, Lisp_Object); +extern void init_callproc_1 (void); +extern void init_callproc (void); +extern void set_initial_environment (void); +extern void syms_of_callproc (void); + +/* Defined in doc.c. */ +extern Lisp_Object read_doc_string (Lisp_Object); +extern Lisp_Object get_doc_string (Lisp_Object, bool, bool); +extern void syms_of_doc (void); +extern int read_bytecode_char (bool); + +/* Defined in bytecode.c. */ +extern void syms_of_bytecode (void); +extern struct byte_stack *byte_stack_list; +#if BYTE_MARK_STACK +extern void mark_byte_stack (void); +#endif +extern void unmark_byte_stack (void); +extern Lisp_Object exec_byte_code (Lisp_Object, Lisp_Object, Lisp_Object, + Lisp_Object, ptrdiff_t, Lisp_Object *); + +/* Defined in macros.c. */ +extern void init_macros (void); +extern void syms_of_macros (void); + +/* Defined in undo.c. */ +extern void truncate_undo_list (struct buffer *); +extern void record_insert (ptrdiff_t, ptrdiff_t); +extern void record_delete (ptrdiff_t, Lisp_Object, bool); +extern void record_first_change (void); +extern void record_change (ptrdiff_t, ptrdiff_t); +extern void record_property_change (ptrdiff_t, ptrdiff_t, + Lisp_Object, Lisp_Object, + Lisp_Object); +extern void syms_of_undo (void); + +/* Defined in textprop.c. */ +extern void report_interval_modification (Lisp_Object, Lisp_Object); + +/* Defined in menu.c. */ +extern void syms_of_menu (void); + +/* Defined in xmenu.c. */ +extern void syms_of_xmenu (void); + +/* Defined in termchar.h. */ +struct tty_display_info; + +/* Defined in termhooks.h. */ +struct terminal; + +/* Defined in sysdep.c. */ +#ifndef HAVE_GET_CURRENT_DIR_NAME +extern char *get_current_dir_name (void); +#endif +extern void stuff_char (char c); +extern void init_foreground_group (void); +extern void sys_subshell (void); +extern void sys_suspend (void); +extern void discard_tty_input (void); +extern void init_sys_modes (struct tty_display_info *); +extern void reset_sys_modes (struct tty_display_info *); +extern void init_all_sys_modes (void); +extern void reset_all_sys_modes (void); +extern void child_setup_tty (int); +extern void setup_pty (int); +extern int set_window_size (int, int, int); +extern EMACS_INT get_random (void); +extern void seed_random (void *, ptrdiff_t); +extern void init_random (void); +extern void emacs_backtrace (int); +extern _Noreturn void emacs_abort (void) NO_INLINE; +extern int emacs_open (const char *, int, int); +extern int emacs_pipe (int[2]); +extern int emacs_close (int); +extern ptrdiff_t emacs_read (int, void *, ptrdiff_t); +extern ptrdiff_t emacs_write (int, void const *, ptrdiff_t); +extern ptrdiff_t emacs_write_sig (int, void const *, ptrdiff_t); +extern void emacs_perror (char const *); + +extern void unlock_all_files (void); +extern void lock_file (Lisp_Object); +extern void unlock_file (Lisp_Object); +extern void unlock_buffer (struct buffer *); +extern void syms_of_filelock (void); +extern int str_collate (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); + +/* Defined in sound.c. */ +extern void syms_of_sound (void); + +/* Defined in category.c. */ +extern void init_category_once (void); +extern Lisp_Object char_category_set (int); +extern void syms_of_category (void); + +/* Defined in ccl.c. */ +extern void syms_of_ccl (void); + +/* Defined in dired.c. */ +extern void syms_of_dired (void); +extern Lisp_Object directory_files_internal (Lisp_Object, Lisp_Object, + Lisp_Object, Lisp_Object, + bool, Lisp_Object); + +/* Defined in term.c. */ +extern int *char_ins_del_vector; +extern void syms_of_term (void); +extern _Noreturn void fatal (const char *msgid, ...) + ATTRIBUTE_FORMAT_PRINTF (1, 2); + +/* Defined in terminal.c. */ +extern void syms_of_terminal (void); + +/* Defined in font.c. */ +extern void syms_of_font (void); +extern void init_font (void); + +#ifdef HAVE_WINDOW_SYSTEM +/* Defined in fontset.c. */ +extern void syms_of_fontset (void); +#endif + +/* Defined in gfilenotify.c */ +#ifdef HAVE_GFILENOTIFY +extern void globals_of_gfilenotify (void); +extern void syms_of_gfilenotify (void); +#endif + +/* Defined in inotify.c */ +#ifdef HAVE_INOTIFY +extern void syms_of_inotify (void); +#endif + +#ifdef HAVE_W32NOTIFY +/* Defined on w32notify.c. */ +extern void syms_of_w32notify (void); +#endif + +/* Defined in xfaces.c. */ +extern Lisp_Object Vface_alternative_font_family_alist; +extern Lisp_Object Vface_alternative_font_registry_alist; +extern void syms_of_xfaces (void); + +#ifdef HAVE_X_WINDOWS +/* Defined in xfns.c. */ +extern void syms_of_xfns (void); + +/* Defined in xsmfns.c. */ +extern void syms_of_xsmfns (void); + +/* Defined in xselect.c. */ +extern void syms_of_xselect (void); + +/* Defined in xterm.c. */ +extern void init_xterm (void); +extern void syms_of_xterm (void); +#endif /* HAVE_X_WINDOWS */ + +#ifdef HAVE_WINDOW_SYSTEM +/* Defined in xterm.c, nsterm.m, w32term.c. */ +extern char *x_get_keysym_name (int); +#endif /* HAVE_WINDOW_SYSTEM */ + +#ifdef HAVE_LIBXML2 +/* Defined in xml.c. */ +extern void syms_of_xml (void); +extern void xml_cleanup_parser (void); +#endif + +#ifdef HAVE_ZLIB +/* Defined in decompress.c. */ +extern void syms_of_decompress (void); +#endif + +#ifdef HAVE_DBUS +/* Defined in dbusbind.c. */ +void init_dbusbind (void); +void syms_of_dbusbind (void); +#endif + + +/* Defined in profiler.c. */ +extern bool profiler_memory_running; +extern void malloc_probe (size_t); +extern void syms_of_profiler (void); + + +#ifdef DOS_NT +/* Defined in msdos.c, w32.c. */ +extern char *emacs_root_dir (void); +#endif /* DOS_NT */ + +/* Defined in lastfile.c. */ +extern char my_edata[]; +extern char my_endbss[]; +extern char *my_endbss_static; + +/* True means ^G can quit instantly. */ +extern bool immediate_quit; + +extern void *xmalloc (size_t) ATTRIBUTE_MALLOC_SIZE ((1)); +extern void *xzalloc (size_t) ATTRIBUTE_MALLOC_SIZE ((1)); +extern void *xrealloc (void *, size_t) ATTRIBUTE_ALLOC_SIZE ((2)); +extern void xfree (void *); +extern void *xnmalloc (ptrdiff_t, ptrdiff_t) ATTRIBUTE_MALLOC_SIZE ((1,2)); +extern void *xnrealloc (void *, ptrdiff_t, ptrdiff_t) + ATTRIBUTE_ALLOC_SIZE ((2,3)); +extern void *xpalloc (void *, ptrdiff_t *, ptrdiff_t, ptrdiff_t, ptrdiff_t); + +extern char *xstrdup (const char *) ATTRIBUTE_MALLOC; +extern char *xlispstrdup (Lisp_Object) ATTRIBUTE_MALLOC; +extern void dupstring (char **, char const *); + +/* Make DEST a copy of STRING's data. Return a pointer to DEST's terminating + null byte. This is like stpcpy, except the source is a Lisp string. */ + +INLINE char * +lispstpcpy (char *dest, Lisp_Object string) +{ + ptrdiff_t len = SBYTES (string); + memcpy (dest, SDATA (string), len + 1); + return dest + len; +} + +extern void xputenv (const char *); + +extern char *egetenv_internal (const char *, ptrdiff_t); + +INLINE char * +egetenv (const char *var) +{ + /* When VAR is a string literal, strlen can be optimized away. */ + return egetenv_internal (var, strlen (var)); +} + +/* Set up the name of the machine we're running on. */ +extern void init_system_name (void); + +/* Return the absolute value of X. X should be a signed integer + expression without side effects, and X's absolute value should not + exceed the maximum for its promoted type. This is called 'eabs' + because 'abs' is reserved by the C standard. */ +#define eabs(x) ((x) < 0 ? -(x) : (x)) + +/* Return a fixnum or float, depending on whether VAL fits in a Lisp + fixnum. */ + +#define make_fixnum_or_float(val) \ + (FIXNUM_OVERFLOW_P (val) ? make_float (val) : make_number (val)) + +/* SAFE_ALLOCA normally allocates memory on the stack, but if size is + larger than MAX_ALLOCA, use xmalloc to avoid overflowing the stack. */ + +enum MAX_ALLOCA { MAX_ALLOCA = 16 * 1024 }; + +extern void *record_xmalloc (size_t) ATTRIBUTE_ALLOC_SIZE ((1)); + +#define USE_SAFE_ALLOCA \ + ptrdiff_t sa_avail = MAX_ALLOCA; \ + ptrdiff_t sa_count = SPECPDL_INDEX (); bool sa_must_free = false + +#define AVAIL_ALLOCA(size) (sa_avail -= (size), alloca (size)) + +/* SAFE_ALLOCA allocates a simple buffer. */ + +#define SAFE_ALLOCA(size) ((size) <= sa_avail \ + ? AVAIL_ALLOCA (size) \ + : (sa_must_free = true, record_xmalloc (size))) + +/* SAFE_NALLOCA sets BUF to a newly allocated array of MULTIPLIER * + NITEMS items, each of the same type as *BUF. MULTIPLIER must + positive. The code is tuned for MULTIPLIER being a constant. */ + +#define SAFE_NALLOCA(buf, multiplier, nitems) \ + do { \ + if ((nitems) <= sa_avail / sizeof *(buf) / (multiplier)) \ + (buf) = AVAIL_ALLOCA (sizeof *(buf) * (multiplier) * (nitems)); \ + else \ + { \ + (buf) = xnmalloc (nitems, sizeof *(buf) * (multiplier)); \ + sa_must_free = true; \ + record_unwind_protect_ptr (xfree, buf); \ + } \ + } while (false) + +/* SAFE_ALLOCA_STRING allocates a C copy of a Lisp string. */ + +#define SAFE_ALLOCA_STRING(ptr, string) \ + do { \ + (ptr) = SAFE_ALLOCA (SBYTES (string) + 1); \ + memcpy (ptr, SDATA (string), SBYTES (string) + 1); \ + } while (false) + +/* SAFE_FREE frees xmalloced memory and enables GC as needed. */ + +#define SAFE_FREE() \ + do { \ + if (sa_must_free) { \ + sa_must_free = false; \ + unbind_to (sa_count, Qnil); \ + } \ + } while (false) + + +/* Return floor (NBYTES / WORD_SIZE). */ + +INLINE ptrdiff_t +lisp_word_count (ptrdiff_t nbytes) +{ + if (-1 >> 1 == -1) + switch (word_size) + { + case 2: return nbytes >> 1; + case 4: return nbytes >> 2; + case 8: return nbytes >> 3; + case 16: return nbytes >> 4; + } + return nbytes / word_size - (nbytes % word_size < 0); +} + +/* SAFE_ALLOCA_LISP allocates an array of Lisp_Objects. */ + +#define SAFE_ALLOCA_LISP(buf, nelt) \ + do { \ + if ((nelt) <= lisp_word_count (sa_avail)) \ + (buf) = AVAIL_ALLOCA ((nelt) * word_size); \ + else if ((nelt) <= min (PTRDIFF_MAX, SIZE_MAX) / word_size) \ + { \ + Lisp_Object arg_; \ + (buf) = xmalloc ((nelt) * word_size); \ + arg_ = make_save_memory (buf, nelt); \ + sa_must_free = true; \ + record_unwind_protect (free_save_value, arg_); \ + } \ + else \ + memory_full (SIZE_MAX); \ + } while (false) + + +/* If USE_STACK_LISP_OBJECTS, define macros that and functions that allocate + block-scoped conses and strings. These objects are not + managed by the garbage collector, so they are dangerous: passing them + out of their scope (e.g., to user code) results in undefined behavior. + Conversely, they have better performance because GC is not involved. + + This feature is experimental and requires careful debugging. + Build with CPPFLAGS='-DUSE_STACK_LISP_OBJECTS=0' to disable it. */ + +#ifndef USE_STACK_LISP_OBJECTS +# define USE_STACK_LISP_OBJECTS true +#endif + +/* USE_STACK_LISP_OBJECTS requires GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS. */ + +#if GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS +# undef USE_STACK_LISP_OBJECTS +# define USE_STACK_LISP_OBJECTS false +#endif + +#ifdef GC_CHECK_STRING_BYTES +enum { defined_GC_CHECK_STRING_BYTES = true }; +#else +enum { defined_GC_CHECK_STRING_BYTES = false }; +#endif + +/* Struct inside unions that are typically no larger and aligned enough. */ + +union Aligned_Cons +{ + struct Lisp_Cons s; + double d; intmax_t i; void *p; +}; + +union Aligned_String +{ + struct Lisp_String s; + double d; intmax_t i; void *p; +}; + +/* True for stack-based cons and string implementations, respectively. + Use stack-based strings only if stack-based cons also works. + Otherwise, STACK_CONS would create heap-based cons cells that + could point to stack-based strings, which is a no-no. */ + +enum + { + USE_STACK_CONS = (USE_STACK_LISP_OBJECTS + && alignof (union Aligned_Cons) % GCALIGNMENT == 0), + USE_STACK_STRING = (USE_STACK_CONS + && !defined_GC_CHECK_STRING_BYTES + && alignof (union Aligned_String) % GCALIGNMENT == 0) + }; + +/* Auxiliary macros used for auto allocation of Lisp objects. Please + use these only in macros like AUTO_CONS that declare a local + variable whose lifetime will be clear to the programmer. */ +#define STACK_CONS(a, b) \ + make_lisp_ptr (&(union Aligned_Cons) { { a, { b } } }.s, Lisp_Cons) +#define AUTO_CONS_EXPR(a, b) \ + (USE_STACK_CONS ? STACK_CONS (a, b) : Fcons (a, b)) + +/* Declare NAME as an auto Lisp cons or short list if possible, a + GC-based one otherwise. This is in the sense of the C keyword + 'auto'; i.e., the object has the lifetime of the containing block. + The resulting object should not be made visible to user Lisp code. */ + +#define AUTO_CONS(name, a, b) Lisp_Object name = AUTO_CONS_EXPR (a, b) +#define AUTO_LIST1(name, a) \ + Lisp_Object name = (USE_STACK_CONS ? STACK_CONS (a, Qnil) : list1 (a)) +#define AUTO_LIST2(name, a, b) \ + Lisp_Object name = (USE_STACK_CONS \ + ? STACK_CONS (a, STACK_CONS (b, Qnil)) \ + : list2 (a, b)) +#define AUTO_LIST3(name, a, b, c) \ + Lisp_Object name = (USE_STACK_CONS \ + ? STACK_CONS (a, STACK_CONS (b, STACK_CONS (c, Qnil))) \ + : list3 (a, b, c)) +#define AUTO_LIST4(name, a, b, c, d) \ + Lisp_Object name \ + = (USE_STACK_CONS \ + ? STACK_CONS (a, STACK_CONS (b, STACK_CONS (c, \ + STACK_CONS (d, Qnil)))) \ + : list4 (a, b, c, d)) + +/* Check whether stack-allocated strings are ASCII-only. */ + +#if defined (ENABLE_CHECKING) && USE_STACK_LISP_OBJECTS +extern const char *verify_ascii (const char *); +#else +# define verify_ascii(str) (str) +#endif + +/* Declare NAME as an auto Lisp string if possible, a GC-based one if not. + Take its value from STR. STR is not necessarily copied and should + contain only ASCII characters. The resulting Lisp string should + not be modified or made visible to user code. */ + +#define AUTO_STRING(name, str) \ + Lisp_Object name = \ + (USE_STACK_STRING \ + ? (make_lisp_ptr \ + ((&(union Aligned_String) \ + {{strlen (str), -1, 0, (unsigned char *) verify_ascii (str)}}.s), \ + Lisp_String)) \ + : build_string (verify_ascii (str))) + +/* Loop over all tails of a list, checking for cycles. + FIXME: Make tortoise and n internal declarations. + FIXME: Unroll the loop body so we don't need `n'. */ +#define FOR_EACH_TAIL(hare, list, tortoise, n) \ + for ((tortoise) = (hare) = (list), (n) = true; \ + CONSP (hare); \ + (hare = XCDR (hare), (n) = !(n), \ + ((n) \ + ? (EQ (hare, tortoise) \ + ? xsignal1 (Qcircular_list, list) \ + : (void) 0) \ + /* Move tortoise before the next iteration, in case */ \ + /* the next iteration does an Fsetcdr. */ \ + : (void) ((tortoise) = XCDR (tortoise))))) + +/* Do a `for' loop over alist values. */ + +#define FOR_EACH_ALIST_VALUE(head_var, list_var, value_var) \ + for ((list_var) = (head_var); \ + (CONSP (list_var) && ((value_var) = XCDR (XCAR (list_var)), true)); \ + (list_var) = XCDR (list_var)) + +/* Check whether it's time for GC, and run it if so. */ + +INLINE void +maybe_gc (void) +{ + if ((consing_since_gc > gc_cons_threshold + && consing_since_gc > gc_relative_threshold) + || (!NILP (Vmemory_full) + && consing_since_gc > memory_full_cons_threshold)) + Fgarbage_collect (); +} + +INLINE bool +functionp (Lisp_Object object) +{ + if (SYMBOLP (object) && !NILP (Ffboundp (object))) + { + object = Findirect_function (object, Qt); + + if (CONSP (object) && EQ (XCAR (object), Qautoload)) + { + /* Autoloaded symbols are functions, except if they load + macros or keymaps. */ + int i; + for (i = 0; i < 4 && CONSP (object); i++) + object = XCDR (object); + + return ! (CONSP (object) && !NILP (XCAR (object))); + } + } + + if (SUBRP (object)) + return XSUBR (object)->max_args != UNEVALLED; + else if (COMPILEDP (object)) + return true; + else if (CONSP (object)) + { + Lisp_Object car = XCAR (object); + return EQ (car, Qlambda) || EQ (car, Qclosure); + } + else + return false; +} + +INLINE_HEADER_END + +#endif /* EMACS_LISP_H */ diff --cc test/manual/etags/c-src/etags.c index 4465b830602,00000000000..453419897bc mode 100644,000000..100644 --- a/test/manual/etags/c-src/etags.c +++ b/test/manual/etags/c-src/etags.c @@@ -1,6563 -1,0 +1,6563 @@@ +/* Tags file maker to go with GNU Emacs -*- coding: utf-8 -*- + +Copyright (C) 1984 The Regents of the University of California + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. +3. Neither the name of the University nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2016 Free Software +Foundation, Inc. + +This file is not considered part of GNU Emacs. + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. ++the Free Software Foundation, either version 3 of the License, or (at ++your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . */ + + +/* NB To comply with the above BSD license, copyright information is +reproduced in etc/ETAGS.README. That file should be updated when the +above notices are. + +To the best of our knowledge, this code was originally based on the +ctags.c distributed with BSD4.2, which was copyrighted by the +University of California, as described above. */ + + +/* + * Authors: + * 1983 Ctags originally by Ken Arnold. + * 1984 Fortran added by Jim Kleckner. + * 1984 Ed Pelegri-Llopart added C typedefs. + * 1985 Emacs TAGS format by Richard Stallman. + * 1989 Sam Kendall added C++. + * 1992 Joseph B. Wells improved C and C++ parsing. + * 1993 Francesco Potortì reorganized C and C++. + * 1994 Line-by-line regexp tags by Tom Tromey. + * 2001 Nested classes by Francesco Potortì (concept by Mykola Dzyuba). + * 2002 #line directives by Francesco Potortì. + * + * Francesco Potortì has maintained and improved it since 1993. + */ + +/* + * If you want to add support for a new language, start by looking at the LUA + * language, which is the simplest. Alternatively, consider distributing etags + * together with a configuration file containing regexp definitions for etags. + */ + +char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4"; + +#ifdef DEBUG +# undef DEBUG +# define DEBUG true +#else +# define DEBUG false +# define NDEBUG /* disable assert */ +#endif + +#include + +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 /* enables some compiler checks on GNU */ +#endif + +/* WIN32_NATIVE is for XEmacs. + MSDOS, WINDOWSNT, DOS_NT are for Emacs. */ +#ifdef WIN32_NATIVE +# undef MSDOS +# undef WINDOWSNT +# define WINDOWSNT +#endif /* WIN32_NATIVE */ + +#ifdef MSDOS +# undef MSDOS +# define MSDOS true +# include +#else +# define MSDOS false +#endif /* MSDOS */ + +#ifdef WINDOWSNT +# include +# define MAXPATHLEN _MAX_PATH +# undef HAVE_NTGUI +# undef DOS_NT +# define DOS_NT +#endif /* WINDOWSNT */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#ifdef NDEBUG +# undef assert /* some systems have a buggy assert.h */ +# define assert(x) ((void) 0) +#endif + +#include +#include + +/* Define CTAGS to make the program "ctags" compatible with the usual one. + Leave it undefined to make the program "etags", which makes emacs-style + tag tables and tags typedefs, #defines and struct/union/enum by default. */ +#ifdef CTAGS +# undef CTAGS +# define CTAGS true +#else +# define CTAGS false +#endif + +#define streq(s,t) (assert ((s)!=NULL || (t)!=NULL), !strcmp (s, t)) +#define strcaseeq(s,t) (assert ((s)!=NULL && (t)!=NULL), !c_strcasecmp (s, t)) +#define strneq(s,t,n) (assert ((s)!=NULL || (t)!=NULL), !strncmp (s, t, n)) +#define strncaseeq(s,t,n) (assert ((s)!=NULL && (t)!=NULL), !c_strncasecmp (s, t, n)) + +#define CHARS 256 /* 2^sizeof(char) */ +#define CHAR(x) ((unsigned int)(x) & (CHARS - 1)) +#define iswhite(c) (_wht[CHAR (c)]) /* c is white (see white) */ +#define notinname(c) (_nin[CHAR (c)]) /* c is not in a name (see nonam) */ +#define begtoken(c) (_btk[CHAR (c)]) /* c can start token (see begtk) */ +#define intoken(c) (_itk[CHAR (c)]) /* c can be in token (see midtk) */ +#define endtoken(c) (_etk[CHAR (c)]) /* c ends tokens (see endtk) */ + +#define ISALNUM(c) isalnum (CHAR (c)) +#define ISALPHA(c) isalpha (CHAR (c)) +#define ISDIGIT(c) isdigit (CHAR (c)) +#define ISLOWER(c) islower (CHAR (c)) + +#define lowcase(c) tolower (CHAR (c)) + + +/* + * xnew, xrnew -- allocate, reallocate storage + * + * SYNOPSIS: Type *xnew (int n, Type); + * void xrnew (OldPointer, int n, Type); + */ +#define xnew(n, Type) ((Type *) xmalloc ((n) * sizeof (Type))) +#define xrnew(op, n, Type) ((op) = (Type *) xrealloc (op, (n) * sizeof (Type))) + +typedef void Lang_function (FILE *); + +typedef struct +{ + const char *suffix; /* file name suffix for this compressor */ + const char *command; /* takes one arg and decompresses to stdout */ +} compressor; + +typedef struct +{ + const char *name; /* language name */ + const char *help; /* detailed help for the language */ + Lang_function *function; /* parse function */ + const char **suffixes; /* name suffixes of this language's files */ + const char **filenames; /* names of this language's files */ + const char **interpreters; /* interpreters for this language */ + bool metasource; /* source used to generate other sources */ +} language; + +typedef struct fdesc +{ + struct fdesc *next; /* for the linked list */ + char *infname; /* uncompressed input file name */ + char *infabsname; /* absolute uncompressed input file name */ + char *infabsdir; /* absolute dir of input file */ + char *taggedfname; /* file name to write in tagfile */ + language *lang; /* language of file */ + char *prop; /* file properties to write in tagfile */ + bool usecharno; /* etags tags shall contain char number */ + bool written; /* entry written in the tags file */ +} fdesc; + +typedef struct node_st +{ /* sorting structure */ + struct node_st *left, *right; /* left and right sons */ + fdesc *fdp; /* description of file to whom tag belongs */ + char *name; /* tag name */ + char *regex; /* search regexp */ + bool valid; /* write this tag on the tag file */ + bool is_func; /* function tag: use regexp in CTAGS mode */ + bool been_warned; /* warning already given for duplicated tag */ + int lno; /* line number tag is on */ + long cno; /* character number line starts on */ +} node; + +/* + * A `linebuffer' is a structure which holds a line of text. + * `readline_internal' reads a line from a stream into a linebuffer + * and works regardless of the length of the line. + * SIZE is the size of BUFFER, LEN is the length of the string in + * BUFFER after readline reads it. + */ +typedef struct +{ + long size; + int len; + char *buffer; +} linebuffer; + +/* Used to support mixing of --lang and file names. */ +typedef struct +{ + enum { + at_language, /* a language specification */ + at_regexp, /* a regular expression */ + at_filename, /* a file name */ + at_stdin, /* read from stdin here */ + at_end /* stop parsing the list */ + } arg_type; /* argument type */ + language *lang; /* language associated with the argument */ + char *what; /* the argument itself */ +} argument; + +/* Structure defining a regular expression. */ +typedef struct regexp +{ + struct regexp *p_next; /* pointer to next in list */ + language *lang; /* if set, use only for this language */ + char *pattern; /* the regexp pattern */ + char *name; /* tag name */ + struct re_pattern_buffer *pat; /* the compiled pattern */ + struct re_registers regs; /* re registers */ + bool error_signaled; /* already signaled for this regexp */ + bool force_explicit_name; /* do not allow implicit tag name */ + bool ignore_case; /* ignore case when matching */ + bool multi_line; /* do a multi-line match on the whole file */ +} regexp; + + +/* Many compilers barf on this: + Lang_function Ada_funcs; + so let's write it this way */ +static void Ada_funcs (FILE *); +static void Asm_labels (FILE *); +static void C_entries (int c_ext, FILE *); +static void default_C_entries (FILE *); +static void plain_C_entries (FILE *); +static void Cjava_entries (FILE *); +static void Cobol_paragraphs (FILE *); +static void Cplusplus_entries (FILE *); +static void Cstar_entries (FILE *); +static void Erlang_functions (FILE *); +static void Forth_words (FILE *); +static void Fortran_functions (FILE *); +static void HTML_labels (FILE *); +static void Lisp_functions (FILE *); +static void Lua_functions (FILE *); +static void Makefile_targets (FILE *); +static void Pascal_functions (FILE *); +static void Perl_functions (FILE *); +static void PHP_functions (FILE *); +static void PS_functions (FILE *); +static void Prolog_functions (FILE *); +static void Python_functions (FILE *); +static void Scheme_functions (FILE *); +static void TeX_commands (FILE *); +static void Texinfo_nodes (FILE *); +static void Yacc_entries (FILE *); +static void just_read_file (FILE *); + +static language *get_language_from_langname (const char *); +static void readline (linebuffer *, FILE *); +static long readline_internal (linebuffer *, FILE *); +static bool nocase_tail (const char *); +static void get_tag (char *, char **); + +static void analyze_regex (char *); +static void free_regexps (void); +static void regex_tag_multiline (void); +static void error (const char *, ...) ATTRIBUTE_FORMAT_PRINTF (1, 2); +static _Noreturn void suggest_asking_for_help (void); +_Noreturn void fatal (const char *, const char *); +static _Noreturn void pfatal (const char *); +static void add_node (node *, node **); + +static void init (void); +static void process_file_name (char *, language *); +static void process_file (FILE *, char *, language *); +static void find_entries (FILE *); +static void free_tree (node *); +static void free_fdesc (fdesc *); +static void pfnote (char *, bool, char *, int, int, long); +static void invalidate_nodes (fdesc *, node **); +static void put_entries (node *); + +static char *concat (const char *, const char *, const char *); +static char *skip_spaces (char *); +static char *skip_non_spaces (char *); +static char *skip_name (char *); +static char *savenstr (const char *, int); +static char *savestr (const char *); +static char *etags_getcwd (void); +static char *relative_filename (char *, char *); +static char *absolute_filename (char *, char *); +static char *absolute_dirname (char *, char *); +static bool filename_is_absolute (char *f); +static void canonicalize_filename (char *); +static void linebuffer_init (linebuffer *); +static void linebuffer_setlen (linebuffer *, int); +static void *xmalloc (size_t); +static void *xrealloc (void *, size_t); + + +static char searchar = '/'; /* use /.../ searches */ + +static char *tagfile; /* output file */ +static char *progname; /* name this program was invoked with */ +static char *cwd; /* current working directory */ +static char *tagfiledir; /* directory of tagfile */ +static FILE *tagf; /* ioptr for tags file */ +static ptrdiff_t whatlen_max; /* maximum length of any 'what' member */ + +static fdesc *fdhead; /* head of file description list */ +static fdesc *curfdp; /* current file description */ +static int lineno; /* line number of current line */ +static long charno; /* current character number */ +static long linecharno; /* charno of start of current line */ +static char *dbp; /* pointer to start of current tag */ + +static const int invalidcharno = -1; + +static node *nodehead; /* the head of the binary tree of tags */ +static node *last_node; /* the last node created */ + +static linebuffer lb; /* the current line */ +static linebuffer filebuf; /* a buffer containing the whole file */ +static linebuffer token_name; /* a buffer containing a tag name */ + +/* boolean "functions" (see init) */ +static bool _wht[CHARS], _nin[CHARS], _itk[CHARS], _btk[CHARS], _etk[CHARS]; +static const char + /* white chars */ + *white = " \f\t\n\r\v", + /* not in a name */ + *nonam = " \f\t\n\r()=,;", /* look at make_tag before modifying! */ + /* token ending chars */ + *endtk = " \t\n\r\"'#()[]{}=-+%*/&|^~!<>;,.:?", + /* token starting chars */ + *begtk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz$~@", + /* valid in-token chars */ + *midtk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz$0123456789"; + +static bool append_to_tagfile; /* -a: append to tags */ +/* The next five default to true in C and derived languages. */ +static bool typedefs; /* -t: create tags for C and Ada typedefs */ +static bool typedefs_or_cplusplus; /* -T: create tags for C typedefs, level */ + /* 0 struct/enum/union decls, and C++ */ + /* member functions. */ +static bool constantypedefs; /* -d: create tags for C #define, enum */ + /* constants and variables. */ + /* -D: opposite of -d. Default under ctags. */ +static int globals; /* create tags for global variables */ +static int members; /* create tags for C member variables */ +static int declarations; /* --declarations: tag them and extern in C&Co*/ +static int no_line_directive; /* ignore #line directives (undocumented) */ +static int no_duplicates; /* no duplicate tags for ctags (undocumented) */ +static bool update; /* -u: update tags */ +static bool vgrind_style; /* -v: create vgrind style index output */ +static bool no_warnings; /* -w: suppress warnings (undocumented) */ +static bool cxref_style; /* -x: create cxref style output */ +static bool cplusplus; /* .[hc] means C++, not C (undocumented) */ +static bool ignoreindent; /* -I: ignore indentation in C */ +static int packages_only; /* --packages-only: in Ada, only tag packages*/ + +/* STDIN is defined in LynxOS system headers */ +#ifdef STDIN +# undef STDIN +#endif + +#define STDIN 0x1001 /* returned by getopt_long on --parse-stdin */ +static bool parsing_stdin; /* --parse-stdin used */ + +static regexp *p_head; /* list of all regexps */ +static bool need_filebuf; /* some regexes are multi-line */ + +static struct option longopts[] = +{ + { "append", no_argument, NULL, 'a' }, + { "packages-only", no_argument, &packages_only, 1 }, + { "c++", no_argument, NULL, 'C' }, + { "declarations", no_argument, &declarations, 1 }, + { "no-line-directive", no_argument, &no_line_directive, 1 }, + { "no-duplicates", no_argument, &no_duplicates, 1 }, + { "help", no_argument, NULL, 'h' }, + { "help", no_argument, NULL, 'H' }, + { "ignore-indentation", no_argument, NULL, 'I' }, + { "language", required_argument, NULL, 'l' }, + { "members", no_argument, &members, 1 }, + { "no-members", no_argument, &members, 0 }, + { "output", required_argument, NULL, 'o' }, + { "regex", required_argument, NULL, 'r' }, + { "no-regex", no_argument, NULL, 'R' }, + { "ignore-case-regex", required_argument, NULL, 'c' }, + { "parse-stdin", required_argument, NULL, STDIN }, + { "version", no_argument, NULL, 'V' }, + +#if CTAGS /* Ctags options */ + { "backward-search", no_argument, NULL, 'B' }, + { "cxref", no_argument, NULL, 'x' }, + { "defines", no_argument, NULL, 'd' }, + { "globals", no_argument, &globals, 1 }, + { "typedefs", no_argument, NULL, 't' }, + { "typedefs-and-c++", no_argument, NULL, 'T' }, + { "update", no_argument, NULL, 'u' }, + { "vgrind", no_argument, NULL, 'v' }, + { "no-warn", no_argument, NULL, 'w' }, + +#else /* Etags options */ + { "no-defines", no_argument, NULL, 'D' }, + { "no-globals", no_argument, &globals, 0 }, + { "include", required_argument, NULL, 'i' }, +#endif + { NULL } +}; + +static compressor compressors[] = +{ + { "z", "gzip -d -c"}, + { "Z", "gzip -d -c"}, + { "gz", "gzip -d -c"}, + { "GZ", "gzip -d -c"}, + { "bz2", "bzip2 -d -c" }, + { "xz", "xz -d -c" }, + { NULL } +}; + +/* + * Language stuff. + */ + +/* Ada code */ +static const char *Ada_suffixes [] = + { "ads", "adb", "ada", NULL }; +static const char Ada_help [] = +"In Ada code, functions, procedures, packages, tasks and types are\n\ +tags. Use the `--packages-only' option to create tags for\n\ +packages only.\n\ +Ada tag names have suffixes indicating the type of entity:\n\ + Entity type: Qualifier:\n\ + ------------ ----------\n\ + function /f\n\ + procedure /p\n\ + package spec /s\n\ + package body /b\n\ + type /t\n\ + task /k\n\ +Thus, `M-x find-tag bidule/b ' will go directly to the\n\ +body of the package `bidule', while `M-x find-tag bidule '\n\ +will just search for any tag `bidule'."; + +/* Assembly code */ +static const char *Asm_suffixes [] = + { "a", /* Unix assembler */ + "asm", /* Microcontroller assembly */ + "def", /* BSO/Tasking definition includes */ + "inc", /* Microcontroller include files */ + "ins", /* Microcontroller include files */ + "s", "sa", /* Unix assembler */ + "S", /* cpp-processed Unix assembler */ + "src", /* BSO/Tasking C compiler output */ + NULL + }; +static const char Asm_help [] = +"In assembler code, labels appearing at the beginning of a line,\n\ +followed by a colon, are tags."; + + +/* Note that .c and .h can be considered C++, if the --c++ flag was + given, or if the `class' or `template' keywords are met inside the file. + That is why default_C_entries is called for these. */ +static const char *default_C_suffixes [] = + { "c", "h", NULL }; +#if CTAGS /* C help for Ctags */ +static const char default_C_help [] = +"In C code, any C function is a tag. Use -t to tag typedefs.\n\ +Use -T to tag definitions of `struct', `union' and `enum'.\n\ +Use -d to tag `#define' macro definitions and `enum' constants.\n\ +Use --globals to tag global variables.\n\ +You can tag function declarations and external variables by\n\ +using `--declarations', and struct members by using `--members'."; +#else /* C help for Etags */ +static const char default_C_help [] = +"In C code, any C function or typedef is a tag, and so are\n\ +definitions of `struct', `union' and `enum'. `#define' macro\n\ +definitions and `enum' constants are tags unless you specify\n\ +`--no-defines'. Global variables are tags unless you specify\n\ +`--no-globals' and so are struct members unless you specify\n\ +`--no-members'. Use of `--no-globals', `--no-defines' and\n\ +`--no-members' can make the tags table file much smaller.\n\ +You can tag function declarations and external variables by\n\ +using `--declarations'."; +#endif /* C help for Ctags and Etags */ + +static const char *Cplusplus_suffixes [] = + { "C", "c++", "cc", "cpp", "cxx", "H", "h++", "hh", "hpp", "hxx", + "M", /* Objective C++ */ + "pdb", /* PostScript with C syntax */ + NULL }; +static const char Cplusplus_help [] = +"In C++ code, all the tag constructs of C code are tagged. (Use\n\ +--help --lang=c --lang=c++ for full help.)\n\ +In addition to C tags, member functions are also recognized. Member\n\ +variables are recognized unless you use the `--no-members' option.\n\ +Tags for variables and functions in classes are named `CLASS::VARIABLE'\n\ +and `CLASS::FUNCTION'. `operator' definitions have tag names like\n\ +`operator+'."; + +static const char *Cjava_suffixes [] = + { "java", NULL }; +static char Cjava_help [] = +"In Java code, all the tags constructs of C and C++ code are\n\ +tagged. (Use --help --lang=c --lang=c++ --lang=java for full help.)"; + + +static const char *Cobol_suffixes [] = + { "COB", "cob", NULL }; +static char Cobol_help [] = +"In Cobol code, tags are paragraph names; that is, any word\n\ +starting in column 8 and followed by a period."; + +static const char *Cstar_suffixes [] = + { "cs", "hs", NULL }; + +static const char *Erlang_suffixes [] = + { "erl", "hrl", NULL }; +static const char Erlang_help [] = +"In Erlang code, the tags are the functions, records and macros\n\ +defined in the file."; + +const char *Forth_suffixes [] = + { "fth", "tok", NULL }; +static const char Forth_help [] = +"In Forth code, tags are words defined by `:',\n\ +constant, code, create, defer, value, variable, buffer:, field."; + +static const char *Fortran_suffixes [] = + { "F", "f", "f90", "for", NULL }; +static const char Fortran_help [] = +"In Fortran code, functions, subroutines and block data are tags."; + +static const char *HTML_suffixes [] = + { "htm", "html", "shtml", NULL }; +static const char HTML_help [] = +"In HTML input files, the tags are the `title' and the `h1', `h2',\n\ +`h3' headers. Also, tags are `name=' in anchors and all\n\ +occurrences of `id='."; + +static const char *Lisp_suffixes [] = + { "cl", "clisp", "el", "l", "lisp", "LSP", "lsp", "ml", NULL }; +static const char Lisp_help [] = +"In Lisp code, any function defined with `defun', any variable\n\ +defined with `defvar' or `defconst', and in general the first\n\ +argument of any expression that starts with `(def' in column zero\n\ +is a tag.\n\ +The `--declarations' option tags \"(defvar foo)\" constructs too."; + +static const char *Lua_suffixes [] = + { "lua", "LUA", NULL }; +static const char Lua_help [] = +"In Lua scripts, all functions are tags."; + +static const char *Makefile_filenames [] = + { "Makefile", "makefile", "GNUMakefile", "Makefile.in", "Makefile.am", NULL}; +static const char Makefile_help [] = +"In makefiles, targets are tags; additionally, variables are tags\n\ +unless you specify `--no-globals'."; + +static const char *Objc_suffixes [] = + { "lm", /* Objective lex file */ + "m", /* Objective C file */ + NULL }; +static const char Objc_help [] = +"In Objective C code, tags include Objective C definitions for classes,\n\ +class categories, methods and protocols. Tags for variables and\n\ - functions in classes are named `CLASS::VARIABLE' and `CLASS::FUNCTION'.\n\ - (Use --help --lang=c --lang=objc --lang=java for full help.)"; ++functions in classes are named `CLASS::VARIABLE' and `CLASS::FUNCTION'.\ ++\n(Use --help --lang=c --lang=objc --lang=java for full help.)"; + +static const char *Pascal_suffixes [] = + { "p", "pas", NULL }; +static const char Pascal_help [] = +"In Pascal code, the tags are the functions and procedures defined\n\ +in the file."; +/* " // this is for working around an Emacs highlighting bug... */ + +static const char *Perl_suffixes [] = + { "pl", "pm", NULL }; +static const char *Perl_interpreters [] = + { "perl", "@PERL@", NULL }; +static const char Perl_help [] = +"In Perl code, the tags are the packages, subroutines and variables\n\ +defined by the `package', `sub', `my' and `local' keywords. Use\n\ +`--globals' if you want to tag global variables. Tags for\n\ +subroutines are named `PACKAGE::SUB'. The name for subroutines\n\ +defined in the default package is `main::SUB'."; + +static const char *PHP_suffixes [] = + { "php", "php3", "php4", NULL }; +static const char PHP_help [] = +"In PHP code, tags are functions, classes and defines. Unless you use\n\ +the `--no-members' option, vars are tags too."; + +static const char *plain_C_suffixes [] = + { "pc", /* Pro*C file */ + NULL }; + +static const char *PS_suffixes [] = + { "ps", "psw", NULL }; /* .psw is for PSWrap */ +static const char PS_help [] = +"In PostScript code, the tags are the functions."; + +static const char *Prolog_suffixes [] = + { "prolog", NULL }; +static const char Prolog_help [] = +"In Prolog code, tags are predicates and rules at the beginning of\n\ +line."; + +static const char *Python_suffixes [] = + { "py", NULL }; +static const char Python_help [] = +"In Python code, `def' or `class' at the beginning of a line\n\ +generate a tag."; + +/* Can't do the `SCM' or `scm' prefix with a version number. */ +static const char *Scheme_suffixes [] = + { "oak", "sch", "scheme", "SCM", "scm", "SM", "sm", "ss", "t", NULL }; +static const char Scheme_help [] = +"In Scheme code, tags include anything defined with `def' or with a\n\ +construct whose name starts with `def'. They also include\n\ +variables set with `set!' at top level in the file."; + +static const char *TeX_suffixes [] = + { "bib", "clo", "cls", "ltx", "sty", "TeX", "tex", NULL }; +static const char TeX_help [] = +"In LaTeX text, the argument of any of the commands `\\chapter',\n\ +`\\section', `\\subsection', `\\subsubsection', `\\eqno', `\\label',\n\ +`\\ref', `\\cite', `\\bibitem', `\\part', `\\appendix', `\\entry',\n\ +`\\index', `\\def', `\\newcommand', `\\renewcommand',\n\ +`\\newenvironment' or `\\renewenvironment' is a tag.\n\ +\n\ +Other commands can be specified by setting the environment variable\n\ +`TEXTAGS' to a colon-separated list like, for example,\n\ + TEXTAGS=\"mycommand:myothercommand\"."; + + +static const char *Texinfo_suffixes [] = + { "texi", "texinfo", "txi", NULL }; +static const char Texinfo_help [] = +"for texinfo files, lines starting with @node are tagged."; + +static const char *Yacc_suffixes [] = + { "y", "y++", "ym", "yxx", "yy", NULL }; /* .ym is Objective yacc file */ +static const char Yacc_help [] = +"In Bison or Yacc input files, each rule defines as a tag the\n\ +nonterminal it constructs. The portions of the file that contain\n\ +C code are parsed as C code (use --help --lang=c --lang=yacc\n\ +for full help)."; + +static const char auto_help [] = +"`auto' is not a real language, it indicates to use\n\ +a default language for files base on file name suffix and file contents."; + +static const char none_help [] = +"`none' is not a real language, it indicates to only do\n\ +regexp processing on files."; + +static const char no_lang_help [] = +"No detailed help available for this language."; + + +/* + * Table of languages. + * + * It is ok for a given function to be listed under more than one + * name. I just didn't. + */ + +static language lang_names [] = +{ + { "ada", Ada_help, Ada_funcs, Ada_suffixes }, + { "asm", Asm_help, Asm_labels, Asm_suffixes }, + { "c", default_C_help, default_C_entries, default_C_suffixes }, + { "c++", Cplusplus_help, Cplusplus_entries, Cplusplus_suffixes }, + { "c*", no_lang_help, Cstar_entries, Cstar_suffixes }, + { "cobol", Cobol_help, Cobol_paragraphs, Cobol_suffixes }, + { "erlang", Erlang_help, Erlang_functions, Erlang_suffixes }, + { "forth", Forth_help, Forth_words, Forth_suffixes }, + { "fortran", Fortran_help, Fortran_functions, Fortran_suffixes }, + { "html", HTML_help, HTML_labels, HTML_suffixes }, + { "java", Cjava_help, Cjava_entries, Cjava_suffixes }, + { "lisp", Lisp_help, Lisp_functions, Lisp_suffixes }, + { "lua", Lua_help, Lua_functions, Lua_suffixes }, + { "makefile", Makefile_help,Makefile_targets,NULL,Makefile_filenames}, + { "objc", Objc_help, plain_C_entries, Objc_suffixes }, + { "pascal", Pascal_help, Pascal_functions, Pascal_suffixes }, + { "perl",Perl_help,Perl_functions,Perl_suffixes,NULL,Perl_interpreters}, + { "php", PHP_help, PHP_functions, PHP_suffixes }, + { "postscript",PS_help, PS_functions, PS_suffixes }, + { "proc", no_lang_help, plain_C_entries, plain_C_suffixes }, + { "prolog", Prolog_help, Prolog_functions, Prolog_suffixes }, + { "python", Python_help, Python_functions, Python_suffixes }, + { "scheme", Scheme_help, Scheme_functions, Scheme_suffixes }, + { "tex", TeX_help, TeX_commands, TeX_suffixes }, + { "texinfo", Texinfo_help, Texinfo_nodes, Texinfo_suffixes }, + { "yacc", Yacc_help,Yacc_entries,Yacc_suffixes,NULL,NULL,true}, + { "auto", auto_help }, /* default guessing scheme */ + { "none", none_help, just_read_file }, /* regexp matching only */ + { NULL } /* end of list */ +}; + + +static void +print_language_names (void) +{ + language *lang; + const char **name, **ext; + + puts ("\nThese are the currently supported languages, along with the\n\ +default file names and dot suffixes:"); + for (lang = lang_names; lang->name != NULL; lang++) + { + printf (" %-*s", 10, lang->name); + if (lang->filenames != NULL) + for (name = lang->filenames; *name != NULL; name++) + printf (" %s", *name); + if (lang->suffixes != NULL) + for (ext = lang->suffixes; *ext != NULL; ext++) + printf (" .%s", *ext); + puts (""); + } + puts ("where `auto' means use default language for files based on file\n\ +name suffix, and `none' means only do regexp processing on files.\n\ +If no language is specified and no matching suffix is found,\n\ +the first line of the file is read for a sharp-bang (#!) sequence\n\ +followed by the name of an interpreter. If no such sequence is found,\n\ +Fortran is tried first; if no tags are found, C is tried next.\n\ +When parsing any C file, a \"class\" or \"template\" keyword\n\ +switches to C++."); + puts ("Compressed files are supported using gzip, bzip2, and xz.\n\ +\n\ +For detailed help on a given language use, for example,\n\ +etags --help --lang=ada."); +} + +#ifndef EMACS_NAME +# define EMACS_NAME "standalone" +#endif +#ifndef VERSION +# define VERSION "17.38.1.4" +#endif +static _Noreturn void +print_version (void) +{ + char emacs_copyright[] = COPYRIGHT; + + printf ("%s (%s %s)\n", (CTAGS) ? "ctags" : "etags", EMACS_NAME, VERSION); + puts (emacs_copyright); + puts ("This program is distributed under the terms in ETAGS.README"); + + exit (EXIT_SUCCESS); +} + +#ifndef PRINT_UNDOCUMENTED_OPTIONS_HELP +# define PRINT_UNDOCUMENTED_OPTIONS_HELP false +#endif + +static _Noreturn void +print_help (argument *argbuffer) +{ + bool help_for_lang = false; + + for (; argbuffer->arg_type != at_end; argbuffer++) + if (argbuffer->arg_type == at_language) + { + if (help_for_lang) + puts (""); + puts (argbuffer->lang->help); + help_for_lang = true; + } + + if (help_for_lang) + exit (EXIT_SUCCESS); + + printf ("Usage: %s [options] [[regex-option ...] file-name] ...\n\ +\n\ +These are the options accepted by %s.\n", progname, progname); + puts ("You may use unambiguous abbreviations for the long option names."); + puts (" A - as file name means read names from stdin (one per line).\n\ +Absolute names are stored in the output file as they are.\n\ +Relative ones are stored relative to the output file's directory.\n"); + + puts ("-a, --append\n\ + Append tag entries to existing tags file."); + + puts ("--packages-only\n\ + For Ada files, only generate tags for packages."); + + if (CTAGS) + puts ("-B, --backward-search\n\ + Write the search commands for the tag entries using '?', the\n\ + backward-search command instead of '/', the forward-search command."); + + /* This option is mostly obsolete, because etags can now automatically + detect C++. Retained for backward compatibility and for debugging and + experimentation. In principle, we could want to tag as C++ even + before any "class" or "template" keyword. + puts ("-C, --c++\n\ + Treat files whose name suffix defaults to C language as C++ files."); + */ + + puts ("--declarations\n\ + In C and derived languages, create tags for function declarations,"); + if (CTAGS) + puts ("\tand create tags for extern variables if --globals is used."); + else + puts + ("\tand create tags for extern variables unless --no-globals is used."); + + if (CTAGS) + puts ("-d, --defines\n\ + Create tag entries for C #define constants and enum constants, too."); + else + puts ("-D, --no-defines\n\ + Don't create tag entries for C #define constants and enum constants.\n\ + This makes the tags file smaller."); + + if (!CTAGS) + puts ("-i FILE, --include=FILE\n\ + Include a note in tag file indicating that, when searching for\n\ + a tag, one should also consult the tags file FILE after\n\ + checking the current file."); + + puts ("-l LANG, --language=LANG\n\ + Force the following files to be considered as written in the\n\ + named language up to the next --language=LANG option."); + + if (CTAGS) + puts ("--globals\n\ + Create tag entries for global variables in some languages."); + else + puts ("--no-globals\n\ + Do not create tag entries for global variables in some\n\ + languages. This makes the tags file smaller."); + + if (PRINT_UNDOCUMENTED_OPTIONS_HELP) + puts ("--no-line-directive\n\ + Ignore #line preprocessor directives in C and derived languages."); + + if (CTAGS) + puts ("--members\n\ + Create tag entries for members of structures in some languages."); + else + puts ("--no-members\n\ + Do not create tag entries for members of structures\n\ + in some languages."); + + puts ("-r REGEXP, --regex=REGEXP or --regex=@regexfile\n\ + Make a tag for each line matching a regular expression pattern\n\ + in the following files. {LANGUAGE}REGEXP uses REGEXP for LANGUAGE\n\ + files only. REGEXFILE is a file containing one REGEXP per line.\n\ + REGEXP takes the form /TAGREGEXP/TAGNAME/MODS, where TAGNAME/ is\n\ + optional. The TAGREGEXP pattern is anchored (as if preceded by ^)."); + puts (" If TAGNAME/ is present, the tags created are named.\n\ + For example Tcl named tags can be created with:\n\ + --regex=\"/proc[ \\t]+\\([^ \\t]+\\)/\\1/.\".\n\ + MODS are optional one-letter modifiers: `i' means to ignore case,\n\ + `m' means to allow multi-line matches, `s' implies `m' and\n\ + causes dot to match any character, including newline."); + + puts ("-R, --no-regex\n\ + Don't create tags from regexps for the following files."); + + puts ("-I, --ignore-indentation\n\ + In C and C++ do not assume that a closing brace in the first\n\ + column is the final brace of a function or structure definition."); + + puts ("-o FILE, --output=FILE\n\ + Write the tags to FILE."); + + puts ("--parse-stdin=NAME\n\ + Read from standard input and record tags as belonging to file NAME."); + + if (CTAGS) + { + puts ("-t, --typedefs\n\ + Generate tag entries for C and Ada typedefs."); + puts ("-T, --typedefs-and-c++\n\ + Generate tag entries for C typedefs, C struct/enum/union tags,\n\ + and C++ member functions."); + } + + if (CTAGS) + puts ("-u, --update\n\ + Update the tag entries for the given files, leaving tag\n\ + entries for other files in place. Currently, this is\n\ + implemented by deleting the existing entries for the given\n\ + files and then rewriting the new entries at the end of the\n\ + tags file. It is often faster to simply rebuild the entire\n\ + tag file than to use this."); + + if (CTAGS) + { + puts ("-v, --vgrind\n\ + Print on the standard output an index of items intended for\n\ + human consumption, similar to the output of vgrind. The index\n\ + is sorted, and gives the page number of each item."); + + if (PRINT_UNDOCUMENTED_OPTIONS_HELP) + puts ("-w, --no-duplicates\n\ + Do not create duplicate tag entries, for compatibility with\n\ + traditional ctags."); + + if (PRINT_UNDOCUMENTED_OPTIONS_HELP) + puts ("-w, --no-warn\n\ + Suppress warning messages about duplicate tag entries."); + + puts ("-x, --cxref\n\ + Like --vgrind, but in the style of cxref, rather than vgrind.\n\ + The output uses line numbers instead of page numbers, but\n\ + beyond that the differences are cosmetic; try both to see\n\ + which you like."); + } + + puts ("-V, --version\n\ + Print the version of the program.\n\ +-h, --help\n\ + Print this help message.\n\ + Followed by one or more `--language' options prints detailed\n\ + help about tag generation for the specified languages."); + + print_language_names (); + + puts (""); + puts ("Report bugs to bug-gnu-emacs@gnu.org"); + + exit (EXIT_SUCCESS); +} + + +int +main (int argc, char **argv) +{ + int i; + unsigned int nincluded_files; + char **included_files; + argument *argbuffer; + int current_arg, file_count; + linebuffer filename_lb; + bool help_asked = false; + ptrdiff_t len; + char *optstring; + int opt; + + progname = argv[0]; + nincluded_files = 0; + included_files = xnew (argc, char *); + current_arg = 0; + file_count = 0; + + /* Allocate enough no matter what happens. Overkill, but each one + is small. */ + argbuffer = xnew (argc, argument); + + /* + * Always find typedefs and structure tags. + * Also default to find macro constants, enum constants, struct + * members and global variables. Do it for both etags and ctags. + */ + typedefs = typedefs_or_cplusplus = constantypedefs = true; + globals = members = true; + + /* When the optstring begins with a '-' getopt_long does not rearrange the + non-options arguments to be at the end, but leaves them alone. */ + optstring = concat ("-ac:Cf:Il:o:r:RSVhH", + (CTAGS) ? "BxdtTuvw" : "Di:", + ""); + + while ((opt = getopt_long (argc, argv, optstring, longopts, NULL)) != EOF) + switch (opt) + { + case 0: + /* If getopt returns 0, then it has already processed a + long-named option. We should do nothing. */ + break; + + case 1: + /* This means that a file name has been seen. Record it. */ + argbuffer[current_arg].arg_type = at_filename; + argbuffer[current_arg].what = optarg; + len = strlen (optarg); + if (whatlen_max < len) + whatlen_max = len; + ++current_arg; + ++file_count; + break; + + case STDIN: + /* Parse standard input. Idea by Vivek . */ + argbuffer[current_arg].arg_type = at_stdin; + argbuffer[current_arg].what = optarg; + len = strlen (optarg); + if (whatlen_max < len) + whatlen_max = len; + ++current_arg; + ++file_count; + if (parsing_stdin) + fatal ("cannot parse standard input more than once", (char *)NULL); + parsing_stdin = true; + break; + + /* Common options. */ + case 'a': append_to_tagfile = true; break; + case 'C': cplusplus = true; break; + case 'f': /* for compatibility with old makefiles */ + case 'o': + if (tagfile) + { + error ("-o option may only be given once."); + suggest_asking_for_help (); + /* NOTREACHED */ + } + tagfile = optarg; + break; + case 'I': + case 'S': /* for backward compatibility */ + ignoreindent = true; + break; + case 'l': + { + language *lang = get_language_from_langname (optarg); + if (lang != NULL) + { + argbuffer[current_arg].lang = lang; + argbuffer[current_arg].arg_type = at_language; + ++current_arg; + } + } + break; + case 'c': + /* Backward compatibility: support obsolete --ignore-case-regexp. */ + optarg = concat (optarg, "i", ""); /* memory leak here */ + /* FALLTHRU */ + case 'r': + argbuffer[current_arg].arg_type = at_regexp; + argbuffer[current_arg].what = optarg; + len = strlen (optarg); + if (whatlen_max < len) + whatlen_max = len; + ++current_arg; + break; + case 'R': + argbuffer[current_arg].arg_type = at_regexp; + argbuffer[current_arg].what = NULL; + ++current_arg; + break; + case 'V': + print_version (); + break; + case 'h': + case 'H': + help_asked = true; + break; + + /* Etags options */ + case 'D': constantypedefs = false; break; + case 'i': included_files[nincluded_files++] = optarg; break; + + /* Ctags options. */ + case 'B': searchar = '?'; break; + case 'd': constantypedefs = true; break; + case 't': typedefs = true; break; + case 'T': typedefs = typedefs_or_cplusplus = true; break; + case 'u': update = true; break; + case 'v': vgrind_style = true; /*FALLTHRU*/ + case 'x': cxref_style = true; break; + case 'w': no_warnings = true; break; + default: + suggest_asking_for_help (); + /* NOTREACHED */ + } + + /* No more options. Store the rest of arguments. */ + for (; optind < argc; optind++) + { + argbuffer[current_arg].arg_type = at_filename; + argbuffer[current_arg].what = argv[optind]; + len = strlen (argv[optind]); + if (whatlen_max < len) + whatlen_max = len; + ++current_arg; + ++file_count; + } + + argbuffer[current_arg].arg_type = at_end; + + if (help_asked) + print_help (argbuffer); + /* NOTREACHED */ + + if (nincluded_files == 0 && file_count == 0) + { + error ("no input files specified."); + suggest_asking_for_help (); + /* NOTREACHED */ + } + + if (tagfile == NULL) + tagfile = savestr (CTAGS ? "tags" : "TAGS"); + cwd = etags_getcwd (); /* the current working directory */ + if (cwd[strlen (cwd) - 1] != '/') + { + char *oldcwd = cwd; + cwd = concat (oldcwd, "/", ""); + free (oldcwd); + } + + /* Compute base directory for relative file names. */ + if (streq (tagfile, "-") + || strneq (tagfile, "/dev/", 5)) + tagfiledir = cwd; /* relative file names are relative to cwd */ + else + { + canonicalize_filename (tagfile); + tagfiledir = absolute_dirname (tagfile, cwd); + } + + init (); /* set up boolean "functions" */ + + linebuffer_init (&lb); + linebuffer_init (&filename_lb); + linebuffer_init (&filebuf); + linebuffer_init (&token_name); + + if (!CTAGS) + { + if (streq (tagfile, "-")) + { + tagf = stdout; + SET_BINARY (fileno (stdout)); + } + else + tagf = fopen (tagfile, append_to_tagfile ? "ab" : "wb"); + if (tagf == NULL) + pfatal (tagfile); + } + + /* + * Loop through files finding functions. + */ + for (i = 0; i < current_arg; i++) + { + static language *lang; /* non-NULL if language is forced */ + char *this_file; + + switch (argbuffer[i].arg_type) + { + case at_language: + lang = argbuffer[i].lang; + break; + case at_regexp: + analyze_regex (argbuffer[i].what); + break; + case at_filename: + this_file = argbuffer[i].what; + /* Input file named "-" means read file names from stdin + (one per line) and use them. */ + if (streq (this_file, "-")) + { + if (parsing_stdin) + fatal ("cannot parse standard input AND read file names from it", + (char *)NULL); + while (readline_internal (&filename_lb, stdin) > 0) + process_file_name (filename_lb.buffer, lang); + } + else + process_file_name (this_file, lang); + break; + case at_stdin: + this_file = argbuffer[i].what; + process_file (stdin, this_file, lang); + break; + } + } + + free_regexps (); + free (lb.buffer); + free (filebuf.buffer); + free (token_name.buffer); + + if (!CTAGS || cxref_style) + { + /* Write the remaining tags to tagf (ETAGS) or stdout (CXREF). */ + put_entries (nodehead); + free_tree (nodehead); + nodehead = NULL; + if (!CTAGS) + { + fdesc *fdp; + + /* Output file entries that have no tags. */ + for (fdp = fdhead; fdp != NULL; fdp = fdp->next) + if (!fdp->written) + fprintf (tagf, "\f\n%s,0\n", fdp->taggedfname); + + while (nincluded_files-- > 0) + fprintf (tagf, "\f\n%s,include\n", *included_files++); + + if (fclose (tagf) == EOF) + pfatal (tagfile); + } + + exit (EXIT_SUCCESS); + } + + /* From here on, we are in (CTAGS && !cxref_style) */ + if (update) + { + char *cmd = + xmalloc (strlen (tagfile) + whatlen_max + + sizeof "mv..OTAGS;fgrep -v '\t\t' OTAGS >;rm OTAGS"); + for (i = 0; i < current_arg; ++i) + { + switch (argbuffer[i].arg_type) + { + case at_filename: + case at_stdin: + break; + default: + continue; /* the for loop */ + } + char *z = stpcpy (cmd, "mv "); + z = stpcpy (z, tagfile); + z = stpcpy (z, " OTAGS;fgrep -v '\t"); + z = stpcpy (z, argbuffer[i].what); + z = stpcpy (z, "\t' OTAGS >"); + z = stpcpy (z, tagfile); + strcpy (z, ";rm OTAGS"); + if (system (cmd) != EXIT_SUCCESS) + fatal ("failed to execute shell command", (char *)NULL); + } + free (cmd); + append_to_tagfile = true; + } + + tagf = fopen (tagfile, append_to_tagfile ? "ab" : "wb"); + if (tagf == NULL) + pfatal (tagfile); + put_entries (nodehead); /* write all the tags (CTAGS) */ + free_tree (nodehead); + nodehead = NULL; + if (fclose (tagf) == EOF) + pfatal (tagfile); + + if (CTAGS) + if (append_to_tagfile || update) + { + char *cmd = xmalloc (2 * strlen (tagfile) + sizeof "sort -u -o.."); + /* Maybe these should be used: + setenv ("LC_COLLATE", "C", 1); + setenv ("LC_ALL", "C", 1); */ + char *z = stpcpy (cmd, "sort -u -o "); + z = stpcpy (z, tagfile); + *z++ = ' '; + strcpy (z, tagfile); + exit (system (cmd)); + } + return EXIT_SUCCESS; +} + + +/* + * Return a compressor given the file name. If EXTPTR is non-zero, + * return a pointer into FILE where the compressor-specific + * extension begins. If no compressor is found, NULL is returned + * and EXTPTR is not significant. + * Idea by Vladimir Alexiev (1998) + */ +static compressor * +get_compressor_from_suffix (char *file, char **extptr) +{ + compressor *compr; + char *slash, *suffix; + + /* File has been processed by canonicalize_filename, + so we don't need to consider backslashes on DOS_NT. */ + slash = strrchr (file, '/'); + suffix = strrchr (file, '.'); + if (suffix == NULL || suffix < slash) + return NULL; + if (extptr != NULL) + *extptr = suffix; + suffix += 1; + /* Let those poor souls who live with DOS 8+3 file name limits get + some solace by treating foo.cgz as if it were foo.c.gz, etc. + Only the first do loop is run if not MSDOS */ + do + { + for (compr = compressors; compr->suffix != NULL; compr++) + if (streq (compr->suffix, suffix)) + return compr; + if (!MSDOS) + break; /* do it only once: not really a loop */ + if (extptr != NULL) + *extptr = ++suffix; + } while (*suffix != '\0'); + return NULL; +} + + + +/* + * Return a language given the name. + */ +static language * +get_language_from_langname (const char *name) +{ + language *lang; + + if (name == NULL) + error ("empty language name"); + else + { + for (lang = lang_names; lang->name != NULL; lang++) + if (streq (name, lang->name)) + return lang; + error ("unknown language \"%s\"", name); + } + + return NULL; +} + + +/* + * Return a language given the interpreter name. + */ +static language * +get_language_from_interpreter (char *interpreter) +{ + language *lang; + const char **iname; + + if (interpreter == NULL) + return NULL; + for (lang = lang_names; lang->name != NULL; lang++) + if (lang->interpreters != NULL) + for (iname = lang->interpreters; *iname != NULL; iname++) + if (streq (*iname, interpreter)) + return lang; + + return NULL; +} + + + +/* + * Return a language given the file name. + */ +static language * +get_language_from_filename (char *file, int case_sensitive) +{ + language *lang; + const char **name, **ext, *suffix; + + /* Try whole file name first. */ + for (lang = lang_names; lang->name != NULL; lang++) + if (lang->filenames != NULL) + for (name = lang->filenames; *name != NULL; name++) + if ((case_sensitive) + ? streq (*name, file) + : strcaseeq (*name, file)) + return lang; + + /* If not found, try suffix after last dot. */ + suffix = strrchr (file, '.'); + if (suffix == NULL) + return NULL; + suffix += 1; + for (lang = lang_names; lang->name != NULL; lang++) + if (lang->suffixes != NULL) + for (ext = lang->suffixes; *ext != NULL; ext++) + if ((case_sensitive) + ? streq (*ext, suffix) + : strcaseeq (*ext, suffix)) + return lang; + return NULL; +} + + +/* + * This routine is called on each file argument. + */ +static void +process_file_name (char *file, language *lang) +{ + struct stat stat_buf; + FILE *inf; + fdesc *fdp; + compressor *compr; + char *compressed_name, *uncompressed_name; + char *ext, *real_name; + int retval; + + canonicalize_filename (file); + if (streq (file, tagfile) && !streq (tagfile, "-")) + { + error ("skipping inclusion of %s in self.", file); + return; + } + if ((compr = get_compressor_from_suffix (file, &ext)) == NULL) + { + compressed_name = NULL; + real_name = uncompressed_name = savestr (file); + } + else + { + real_name = compressed_name = savestr (file); + uncompressed_name = savenstr (file, ext - file); + } + + /* If the canonicalized uncompressed name + has already been dealt with, skip it silently. */ + for (fdp = fdhead; fdp != NULL; fdp = fdp->next) + { + assert (fdp->infname != NULL); + if (streq (uncompressed_name, fdp->infname)) + goto cleanup; + } + + if (stat (real_name, &stat_buf) != 0) + { + /* Reset real_name and try with a different name. */ + real_name = NULL; + if (compressed_name != NULL) /* try with the given suffix */ + { + if (stat (uncompressed_name, &stat_buf) == 0) + real_name = uncompressed_name; + } + else /* try all possible suffixes */ + { + for (compr = compressors; compr->suffix != NULL; compr++) + { + compressed_name = concat (file, ".", compr->suffix); + if (stat (compressed_name, &stat_buf) != 0) + { + if (MSDOS) + { + char *suf = compressed_name + strlen (file); + size_t suflen = strlen (compr->suffix) + 1; + for ( ; suf[1]; suf++, suflen--) + { + memmove (suf, suf + 1, suflen); + if (stat (compressed_name, &stat_buf) == 0) + { + real_name = compressed_name; + break; + } + } + if (real_name != NULL) + break; + } /* MSDOS */ + free (compressed_name); + compressed_name = NULL; + } + else + { + real_name = compressed_name; + break; + } + } + } + if (real_name == NULL) + { + perror (file); + goto cleanup; + } + } /* try with a different name */ + + if (!S_ISREG (stat_buf.st_mode)) + { + error ("skipping %s: it is not a regular file.", real_name); + goto cleanup; + } + if (real_name == compressed_name) + { + char *cmd = concat (compr->command, " ", real_name); + inf = popen (cmd, "r" FOPEN_BINARY); + free (cmd); + } + else + inf = fopen (real_name, "r" FOPEN_BINARY); + if (inf == NULL) + { + perror (real_name); + goto cleanup; + } + + process_file (inf, uncompressed_name, lang); + + if (real_name == compressed_name) + retval = pclose (inf); + else + retval = fclose (inf); + if (retval < 0) + pfatal (file); + + cleanup: + free (compressed_name); + free (uncompressed_name); + last_node = NULL; + curfdp = NULL; + return; +} + +static void +process_file (FILE *fh, char *fn, language *lang) +{ + static const fdesc emptyfdesc; + fdesc *fdp; + + /* Create a new input file description entry. */ + fdp = xnew (1, fdesc); + *fdp = emptyfdesc; + fdp->next = fdhead; + fdp->infname = savestr (fn); + fdp->lang = lang; + fdp->infabsname = absolute_filename (fn, cwd); + fdp->infabsdir = absolute_dirname (fn, cwd); + if (filename_is_absolute (fn)) + { + /* An absolute file name. Canonicalize it. */ + fdp->taggedfname = absolute_filename (fn, NULL); + } + else + { + /* A file name relative to cwd. Make it relative + to the directory of the tags file. */ + fdp->taggedfname = relative_filename (fn, tagfiledir); + } + fdp->usecharno = true; /* use char position when making tags */ + fdp->prop = NULL; + fdp->written = false; /* not written on tags file yet */ + + fdhead = fdp; + curfdp = fdhead; /* the current file description */ + + find_entries (fh); + + /* If not Ctags, and if this is not metasource and if it contained no #line + directives, we can write the tags and free all nodes pointing to + curfdp. */ + if (!CTAGS + && curfdp->usecharno /* no #line directives in this file */ + && !curfdp->lang->metasource) + { + node *np, *prev; + + /* Look for the head of the sublist relative to this file. See add_node + for the structure of the node tree. */ + prev = NULL; + for (np = nodehead; np != NULL; prev = np, np = np->left) + if (np->fdp == curfdp) + break; + + /* If we generated tags for this file, write and delete them. */ + if (np != NULL) + { + /* This is the head of the last sublist, if any. The following + instructions depend on this being true. */ + assert (np->left == NULL); + + assert (fdhead == curfdp); + assert (last_node->fdp == curfdp); + put_entries (np); /* write tags for file curfdp->taggedfname */ + free_tree (np); /* remove the written nodes */ + if (prev == NULL) + nodehead = NULL; /* no nodes left */ + else + prev->left = NULL; /* delete the pointer to the sublist */ + } + } +} + +/* + * This routine sets up the boolean pseudo-functions which work + * by setting boolean flags dependent upon the corresponding character. + * Every char which is NOT in that string is not a white char. Therefore, + * all of the array "_wht" is set to false, and then the elements + * subscripted by the chars in "white" are set to true. Thus "_wht" + * of a char is true if it is the string "white", else false. + */ +static void +init (void) +{ + const char *sp; + int i; + + for (i = 0; i < CHARS; i++) + iswhite (i) = notinname (i) = begtoken (i) = intoken (i) = endtoken (i) + = false; + for (sp = white; *sp != '\0'; sp++) iswhite (*sp) = true; + for (sp = nonam; *sp != '\0'; sp++) notinname (*sp) = true; + notinname ('\0') = notinname ('\n'); + for (sp = begtk; *sp != '\0'; sp++) begtoken (*sp) = true; + begtoken ('\0') = begtoken ('\n'); + for (sp = midtk; *sp != '\0'; sp++) intoken (*sp) = true; + intoken ('\0') = intoken ('\n'); + for (sp = endtk; *sp != '\0'; sp++) endtoken (*sp) = true; + endtoken ('\0') = endtoken ('\n'); +} + +/* + * This routine opens the specified file and calls the function + * which finds the function and type definitions. + */ +static void +find_entries (FILE *inf) +{ + char *cp; + language *lang = curfdp->lang; + Lang_function *parser = NULL; + + /* If user specified a language, use it. */ + if (lang != NULL && lang->function != NULL) + { + parser = lang->function; + } + + /* Else try to guess the language given the file name. */ + if (parser == NULL) + { + lang = get_language_from_filename (curfdp->infname, true); + if (lang != NULL && lang->function != NULL) + { + curfdp->lang = lang; + parser = lang->function; + } + } + + /* Else look for sharp-bang as the first two characters. */ + if (parser == NULL + && readline_internal (&lb, inf) > 0 + && lb.len >= 2 + && lb.buffer[0] == '#' + && lb.buffer[1] == '!') + { + char *lp; + + /* Set lp to point at the first char after the last slash in the + line or, if no slashes, at the first nonblank. Then set cp to + the first successive blank and terminate the string. */ + lp = strrchr (lb.buffer+2, '/'); + if (lp != NULL) + lp += 1; + else + lp = skip_spaces (lb.buffer + 2); + cp = skip_non_spaces (lp); + *cp = '\0'; + + if (strlen (lp) > 0) + { + lang = get_language_from_interpreter (lp); + if (lang != NULL && lang->function != NULL) + { + curfdp->lang = lang; + parser = lang->function; + } + } + } + + /* We rewind here, even if inf may be a pipe. We fail if the + length of the first line is longer than the pipe block size, + which is unlikely. */ + rewind (inf); + + /* Else try to guess the language given the case insensitive file name. */ + if (parser == NULL) + { + lang = get_language_from_filename (curfdp->infname, false); + if (lang != NULL && lang->function != NULL) + { + curfdp->lang = lang; + parser = lang->function; + } + } + + /* Else try Fortran or C. */ + if (parser == NULL) + { + node *old_last_node = last_node; + + curfdp->lang = get_language_from_langname ("fortran"); + find_entries (inf); + + if (old_last_node == last_node) + /* No Fortran entries found. Try C. */ + { + /* We do not tag if rewind fails. + Only the file name will be recorded in the tags file. */ + rewind (inf); + curfdp->lang = get_language_from_langname (cplusplus ? "c++" : "c"); + find_entries (inf); + } + return; + } + + if (!no_line_directive + && curfdp->lang != NULL && curfdp->lang->metasource) + /* It may be that this is a bingo.y file, and we already parsed a bingo.c + file, or anyway we parsed a file that is automatically generated from + this one. If this is the case, the bingo.c file contained #line + directives that generated tags pointing to this file. Let's delete + them all before parsing this file, which is the real source. */ + { + fdesc **fdpp = &fdhead; + while (*fdpp != NULL) + if (*fdpp != curfdp + && streq ((*fdpp)->taggedfname, curfdp->taggedfname)) + /* We found one of those! We must delete both the file description + and all tags referring to it. */ + { + fdesc *badfdp = *fdpp; + + /* Delete the tags referring to badfdp->taggedfname + that were obtained from badfdp->infname. */ + invalidate_nodes (badfdp, &nodehead); + + *fdpp = badfdp->next; /* remove the bad description from the list */ + free_fdesc (badfdp); + } + else + fdpp = &(*fdpp)->next; /* advance the list pointer */ + } + + assert (parser != NULL); + + /* Generic initializations before reading from file. */ + linebuffer_setlen (&filebuf, 0); /* reset the file buffer */ + + /* Generic initializations before parsing file with readline. */ + lineno = 0; /* reset global line number */ + charno = 0; /* reset global char number */ + linecharno = 0; /* reset global char number of line start */ + + parser (inf); + + regex_tag_multiline (); +} + + +/* + * Check whether an implicitly named tag should be created, + * then call `pfnote'. + * NAME is a string that is internally copied by this function. + * + * TAGS format specification + * Idea by Sam Kendall (1997) + * The following is explained in some more detail in etc/ETAGS.EBNF. + * + * make_tag creates tags with "implicit tag names" (unnamed tags) + * if the following are all true, assuming NONAM=" \f\t\n\r()=,;": + * 1. NAME does not contain any of the characters in NONAM; + * 2. LINESTART contains name as either a rightmost, or rightmost but + * one character, substring; + * 3. the character, if any, immediately before NAME in LINESTART must + * be a character in NONAM; + * 4. the character, if any, immediately after NAME in LINESTART must + * also be a character in NONAM. + * + * The implementation uses the notinname() macro, which recognizes the + * characters stored in the string `nonam'. + * etags.el needs to use the same characters that are in NONAM. + */ +static void +make_tag (const char *name, /* tag name, or NULL if unnamed */ + int namelen, /* tag length */ + bool is_func, /* tag is a function */ + char *linestart, /* start of the line where tag is */ + int linelen, /* length of the line where tag is */ + int lno, /* line number */ + long int cno) /* character number */ +{ + bool named = (name != NULL && namelen > 0); + char *nname = NULL; + + if (!CTAGS && named) /* maybe set named to false */ + /* Let's try to make an implicit tag name, that is, create an unnamed tag + such that etags.el can guess a name from it. */ + { + int i; + register const char *cp = name; + + for (i = 0; i < namelen; i++) + if (notinname (*cp++)) + break; + if (i == namelen) /* rule #1 */ + { + cp = linestart + linelen - namelen; + if (notinname (linestart[linelen-1])) + cp -= 1; /* rule #4 */ + if (cp >= linestart /* rule #2 */ + && (cp == linestart + || notinname (cp[-1])) /* rule #3 */ + && strneq (name, cp, namelen)) /* rule #2 */ + named = false; /* use implicit tag name */ + } + } + + if (named) + nname = savenstr (name, namelen); + + pfnote (nname, is_func, linestart, linelen, lno, cno); +} + +/* Record a tag. */ +static void +pfnote (char *name, bool is_func, char *linestart, int linelen, int lno, + long int cno) + /* tag name, or NULL if unnamed */ + /* tag is a function */ + /* start of the line where tag is */ + /* length of the line where tag is */ + /* line number */ + /* character number */ +{ + register node *np; + + assert (name == NULL || name[0] != '\0'); + if (CTAGS && name == NULL) + return; + + np = xnew (1, node); + + /* If ctags mode, change name "main" to M. */ + if (CTAGS && !cxref_style && streq (name, "main")) + { + char *fp = strrchr (curfdp->taggedfname, '/'); + np->name = concat ("M", fp == NULL ? curfdp->taggedfname : fp + 1, ""); + fp = strrchr (np->name, '.'); + if (fp != NULL && fp[1] != '\0' && fp[2] == '\0') + fp[0] = '\0'; + } + else + np->name = name; + np->valid = true; + np->been_warned = false; + np->fdp = curfdp; + np->is_func = is_func; + np->lno = lno; + if (np->fdp->usecharno) + /* Our char numbers are 0-base, because of C language tradition? + ctags compatibility? old versions compatibility? I don't know. + Anyway, since emacs's are 1-base we expect etags.el to take care + of the difference. If we wanted to have 1-based numbers, we would + uncomment the +1 below. */ + np->cno = cno /* + 1 */ ; + else + np->cno = invalidcharno; + np->left = np->right = NULL; + if (CTAGS && !cxref_style) + { + if (strlen (linestart) < 50) + np->regex = concat (linestart, "$", ""); + else + np->regex = savenstr (linestart, 50); + } + else + np->regex = savenstr (linestart, linelen); + + add_node (np, &nodehead); +} + +/* + * free_tree () + * recurse on left children, iterate on right children. + */ +static void +free_tree (register node *np) +{ + while (np) + { + register node *node_right = np->right; + free_tree (np->left); + free (np->name); + free (np->regex); + free (np); + np = node_right; + } +} + +/* + * free_fdesc () + * delete a file description + */ +static void +free_fdesc (register fdesc *fdp) +{ + free (fdp->infname); + free (fdp->infabsname); + free (fdp->infabsdir); + free (fdp->taggedfname); + free (fdp->prop); + free (fdp); +} + +/* + * add_node () + * Adds a node to the tree of nodes. In etags mode, sort by file + * name. In ctags mode, sort by tag name. Make no attempt at + * balancing. + * + * add_node is the only function allowed to add nodes, so it can + * maintain state. + */ +static void +add_node (node *np, node **cur_node_p) +{ + register int dif; + register node *cur_node = *cur_node_p; + + if (cur_node == NULL) + { + *cur_node_p = np; + last_node = np; + return; + } + + if (!CTAGS) + /* Etags Mode */ + { + /* For each file name, tags are in a linked sublist on the right + pointer. The first tags of different files are a linked list + on the left pointer. last_node points to the end of the last + used sublist. */ + if (last_node != NULL && last_node->fdp == np->fdp) + { + /* Let's use the same sublist as the last added node. */ + assert (last_node->right == NULL); + last_node->right = np; + last_node = np; + } + else if (cur_node->fdp == np->fdp) + { + /* Scanning the list we found the head of a sublist which is + good for us. Let's scan this sublist. */ + add_node (np, &cur_node->right); + } + else + /* The head of this sublist is not good for us. Let's try the + next one. */ + add_node (np, &cur_node->left); + } /* if ETAGS mode */ + + else + { + /* Ctags Mode */ + dif = strcmp (np->name, cur_node->name); + + /* + * If this tag name matches an existing one, then + * do not add the node, but maybe print a warning. + */ + if (no_duplicates && !dif) + { + if (np->fdp == cur_node->fdp) + { + if (!no_warnings) + { + fprintf (stderr, "Duplicate entry in file %s, line %d: %s\n", + np->fdp->infname, lineno, np->name); + fprintf (stderr, "Second entry ignored\n"); + } + } + else if (!cur_node->been_warned && !no_warnings) + { + fprintf + (stderr, + "Duplicate entry in files %s and %s: %s (Warning only)\n", + np->fdp->infname, cur_node->fdp->infname, np->name); + cur_node->been_warned = true; + } + return; + } + + /* Actually add the node */ + add_node (np, dif < 0 ? &cur_node->left : &cur_node->right); + } /* if CTAGS mode */ +} + +/* + * invalidate_nodes () + * Scan the node tree and invalidate all nodes pointing to the + * given file description (CTAGS case) or free them (ETAGS case). + */ +static void +invalidate_nodes (fdesc *badfdp, node **npp) +{ + node *np = *npp; + + if (np == NULL) + return; + + if (CTAGS) + { + if (np->left != NULL) + invalidate_nodes (badfdp, &np->left); + if (np->fdp == badfdp) + np->valid = false; + if (np->right != NULL) + invalidate_nodes (badfdp, &np->right); + } + else + { + assert (np->fdp != NULL); + if (np->fdp == badfdp) + { + *npp = np->left; /* detach the sublist from the list */ + np->left = NULL; /* isolate it */ + free_tree (np); /* free it */ + invalidate_nodes (badfdp, npp); + } + else + invalidate_nodes (badfdp, &np->left); + } +} + + +static int total_size_of_entries (node *); +static int number_len (long) ATTRIBUTE_CONST; + +/* Length of a non-negative number's decimal representation. */ +static int +number_len (long int num) +{ + int len = 1; + while ((num /= 10) > 0) + len += 1; + return len; +} + +/* + * Return total number of characters that put_entries will output for + * the nodes in the linked list at the right of the specified node. + * This count is irrelevant with etags.el since emacs 19.34 at least, + * but is still supplied for backward compatibility. + */ +static int +total_size_of_entries (register node *np) +{ + register int total = 0; + + for (; np != NULL; np = np->right) + if (np->valid) + { + total += strlen (np->regex) + 1; /* pat\177 */ + if (np->name != NULL) + total += strlen (np->name) + 1; /* name\001 */ + total += number_len ((long) np->lno) + 1; /* lno, */ + if (np->cno != invalidcharno) /* cno */ + total += number_len (np->cno); + total += 1; /* newline */ + } + + return total; +} + +static void +put_entries (register node *np) +{ + register char *sp; + static fdesc *fdp = NULL; + + if (np == NULL) + return; + + /* Output subentries that precede this one */ + if (CTAGS) + put_entries (np->left); + + /* Output this entry */ + if (np->valid) + { + if (!CTAGS) + { + /* Etags mode */ + if (fdp != np->fdp) + { + fdp = np->fdp; + fprintf (tagf, "\f\n%s,%d\n", + fdp->taggedfname, total_size_of_entries (np)); + fdp->written = true; + } + fputs (np->regex, tagf); + fputc ('\177', tagf); + if (np->name != NULL) + { + fputs (np->name, tagf); + fputc ('\001', tagf); + } + fprintf (tagf, "%d,", np->lno); + if (np->cno != invalidcharno) + fprintf (tagf, "%ld", np->cno); + fputs ("\n", tagf); + } + else + { + /* Ctags mode */ + if (np->name == NULL) + error ("internal error: NULL name in ctags mode."); + + if (cxref_style) + { + if (vgrind_style) + fprintf (stdout, "%s %s %d\n", + np->name, np->fdp->taggedfname, (np->lno + 63) / 64); + else + fprintf (stdout, "%-16s %3d %-16s %s\n", + np->name, np->lno, np->fdp->taggedfname, np->regex); + } + else + { + fprintf (tagf, "%s\t%s\t", np->name, np->fdp->taggedfname); + + if (np->is_func) + { /* function or #define macro with args */ + putc (searchar, tagf); + putc ('^', tagf); + + for (sp = np->regex; *sp; sp++) + { + if (*sp == '\\' || *sp == searchar) + putc ('\\', tagf); + putc (*sp, tagf); + } + putc (searchar, tagf); + } + else + { /* anything else; text pattern inadequate */ + fprintf (tagf, "%d", np->lno); + } + putc ('\n', tagf); + } + } + } /* if this node contains a valid tag */ + + /* Output subentries that follow this one */ + put_entries (np->right); + if (!CTAGS) + put_entries (np->left); +} + + +/* C extensions. */ +#define C_EXT 0x00fff /* C extensions */ +#define C_PLAIN 0x00000 /* C */ +#define C_PLPL 0x00001 /* C++ */ +#define C_STAR 0x00003 /* C* */ +#define C_JAVA 0x00005 /* JAVA */ +#define C_AUTO 0x01000 /* C, but switch to C++ if `class' is met */ +#define YACC 0x10000 /* yacc file */ + +/* + * The C symbol tables. + */ +enum sym_type +{ + st_none, + st_C_objprot, st_C_objimpl, st_C_objend, + st_C_gnumacro, + st_C_ignore, st_C_attribute, + st_C_javastruct, + st_C_operator, + st_C_class, st_C_template, + st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef +}; + +/* Feed stuff between (but not including) %[ and %] lines to: + gperf -m 5 +%[ +%compare-strncmp +%enum +%struct-type +struct C_stab_entry { char *name; int c_ext; enum sym_type type; } +%% +if, 0, st_C_ignore +for, 0, st_C_ignore +while, 0, st_C_ignore +switch, 0, st_C_ignore +return, 0, st_C_ignore +__attribute__, 0, st_C_attribute +GTY, 0, st_C_attribute +@interface, 0, st_C_objprot +@protocol, 0, st_C_objprot +@implementation,0, st_C_objimpl +@end, 0, st_C_objend +import, (C_JAVA & ~C_PLPL), st_C_ignore +package, (C_JAVA & ~C_PLPL), st_C_ignore +friend, C_PLPL, st_C_ignore +extends, (C_JAVA & ~C_PLPL), st_C_javastruct +implements, (C_JAVA & ~C_PLPL), st_C_javastruct +interface, (C_JAVA & ~C_PLPL), st_C_struct +class, 0, st_C_class +namespace, C_PLPL, st_C_struct +domain, C_STAR, st_C_struct +union, 0, st_C_struct +struct, 0, st_C_struct +extern, 0, st_C_extern +enum, 0, st_C_enum +typedef, 0, st_C_typedef +define, 0, st_C_define +undef, 0, st_C_define +operator, C_PLPL, st_C_operator +template, 0, st_C_template +# DEFUN used in emacs, the next three used in glibc (SYSCALL only for mach). +DEFUN, 0, st_C_gnumacro +SYSCALL, 0, st_C_gnumacro +ENTRY, 0, st_C_gnumacro +PSEUDO, 0, st_C_gnumacro +# These are defined inside C functions, so currently they are not met. +# EXFUN used in glibc, DEFVAR_* in emacs. +#EXFUN, 0, st_C_gnumacro +#DEFVAR_, 0, st_C_gnumacro +%] +and replace lines between %< and %> with its output, then: + - remove the #if characterset check + - make in_word_set static and not inline. */ +/*%<*/ +/* C code produced by gperf version 3.0.1 */ +/* Command-line: gperf -m 5 */ +/* Computed positions: -k'2-3' */ + +struct C_stab_entry { const char *name; int c_ext; enum sym_type type; }; +/* maximum key range = 33, duplicates = 0 */ + +static int +hash (const char *str, int len) +{ + static char const asso_values[] = + { + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 3, + 26, 35, 35, 35, 35, 35, 35, 35, 27, 35, + 35, 35, 35, 24, 0, 35, 35, 35, 35, 0, + 35, 35, 35, 35, 35, 1, 35, 16, 35, 6, + 23, 0, 0, 35, 22, 0, 35, 35, 5, 0, + 0, 15, 1, 35, 6, 35, 8, 19, 35, 16, + 4, 5, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35 + }; + int hval = len; + + switch (hval) + { + default: + hval += asso_values[(unsigned char) str[2]]; + /*FALLTHROUGH*/ + case 2: + hval += asso_values[(unsigned char) str[1]]; + break; + } + return hval; +} + +static struct C_stab_entry * +in_word_set (register const char *str, register unsigned int len) +{ + enum + { + TOTAL_KEYWORDS = 33, + MIN_WORD_LENGTH = 2, + MAX_WORD_LENGTH = 15, + MIN_HASH_VALUE = 2, + MAX_HASH_VALUE = 34 + }; + + static struct C_stab_entry wordlist[] = + { + {""}, {""}, + {"if", 0, st_C_ignore}, + {"GTY", 0, st_C_attribute}, + {"@end", 0, st_C_objend}, + {"union", 0, st_C_struct}, + {"define", 0, st_C_define}, + {"import", (C_JAVA & ~C_PLPL), st_C_ignore}, + {"template", 0, st_C_template}, + {"operator", C_PLPL, st_C_operator}, + {"@interface", 0, st_C_objprot}, + {"implements", (C_JAVA & ~C_PLPL), st_C_javastruct}, + {"friend", C_PLPL, st_C_ignore}, + {"typedef", 0, st_C_typedef}, + {"return", 0, st_C_ignore}, + {"@implementation",0, st_C_objimpl}, + {"@protocol", 0, st_C_objprot}, + {"interface", (C_JAVA & ~C_PLPL), st_C_struct}, + {"extern", 0, st_C_extern}, + {"extends", (C_JAVA & ~C_PLPL), st_C_javastruct}, + {"struct", 0, st_C_struct}, + {"domain", C_STAR, st_C_struct}, + {"switch", 0, st_C_ignore}, + {"enum", 0, st_C_enum}, + {"for", 0, st_C_ignore}, + {"namespace", C_PLPL, st_C_struct}, + {"class", 0, st_C_class}, + {"while", 0, st_C_ignore}, + {"undef", 0, st_C_define}, + {"package", (C_JAVA & ~C_PLPL), st_C_ignore}, + {"__attribute__", 0, st_C_attribute}, + {"SYSCALL", 0, st_C_gnumacro}, + {"ENTRY", 0, st_C_gnumacro}, + {"PSEUDO", 0, st_C_gnumacro}, + {"DEFUN", 0, st_C_gnumacro} + }; + + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) + { + int key = hash (str, len); + + if (key <= MAX_HASH_VALUE && key >= 0) + { + const char *s = wordlist[key].name; + + if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0') + return &wordlist[key]; + } + } + return 0; +} +/*%>*/ + +static enum sym_type +C_symtype (char *str, int len, int c_ext) +{ + register struct C_stab_entry *se = in_word_set (str, len); + + if (se == NULL || (se->c_ext && !(c_ext & se->c_ext))) + return st_none; + return se->type; +} + + +/* + * Ignoring __attribute__ ((list)) + */ +static bool inattribute; /* looking at an __attribute__ construct */ + +/* + * C functions and variables are recognized using a simple + * finite automaton. fvdef is its state variable. + */ +static enum +{ + fvnone, /* nothing seen */ + fdefunkey, /* Emacs DEFUN keyword seen */ + fdefunname, /* Emacs DEFUN name seen */ + foperator, /* func: operator keyword seen (cplpl) */ + fvnameseen, /* function or variable name seen */ + fstartlist, /* func: just after open parenthesis */ + finlist, /* func: in parameter list */ + flistseen, /* func: after parameter list */ + fignore, /* func: before open brace */ + vignore /* var-like: ignore until ';' */ +} fvdef; + +static bool fvextern; /* func or var: extern keyword seen; */ + +/* + * typedefs are recognized using a simple finite automaton. + * typdef is its state variable. + */ +static enum +{ + tnone, /* nothing seen */ + tkeyseen, /* typedef keyword seen */ + ttypeseen, /* defined type seen */ + tinbody, /* inside typedef body */ + tend, /* just before typedef tag */ + tignore /* junk after typedef tag */ +} typdef; + +/* + * struct-like structures (enum, struct and union) are recognized + * using another simple finite automaton. `structdef' is its state + * variable. + */ +static enum +{ + snone, /* nothing seen yet, + or in struct body if bracelev > 0 */ + skeyseen, /* struct-like keyword seen */ + stagseen, /* struct-like tag seen */ + scolonseen /* colon seen after struct-like tag */ +} structdef; + +/* + * When objdef is different from onone, objtag is the name of the class. + */ +static const char *objtag = ""; + +/* + * Yet another little state machine to deal with preprocessor lines. + */ +static enum +{ + dnone, /* nothing seen */ + dsharpseen, /* '#' seen as first char on line */ + ddefineseen, /* '#' and 'define' seen */ + dignorerest /* ignore rest of line */ +} definedef; + +/* + * State machine for Objective C protocols and implementations. + * Idea by Tom R.Hageman (1995) + */ +static enum +{ + onone, /* nothing seen */ + oprotocol, /* @interface or @protocol seen */ + oimplementation, /* @implementations seen */ + otagseen, /* class name seen */ + oparenseen, /* parenthesis before category seen */ + ocatseen, /* category name seen */ + oinbody, /* in @implementation body */ + omethodsign, /* in @implementation body, after +/- */ + omethodtag, /* after method name */ + omethodcolon, /* after method colon */ + omethodparm, /* after method parameter */ + oignore /* wait for @end */ +} objdef; + + +/* + * Use this structure to keep info about the token read, and how it + * should be tagged. Used by the make_C_tag function to build a tag. + */ +static struct tok +{ + char *line; /* string containing the token */ + int offset; /* where the token starts in LINE */ + int length; /* token length */ + /* + The previous members can be used to pass strings around for generic + purposes. The following ones specifically refer to creating tags. In this + case the token contained here is the pattern that will be used to create a + tag. + */ + bool valid; /* do not create a tag; the token should be + invalidated whenever a state machine is + reset prematurely */ + bool named; /* create a named tag */ + int lineno; /* source line number of tag */ + long linepos; /* source char number of tag */ +} token; /* latest token read */ + +/* + * Variables and functions for dealing with nested structures. + * Idea by Mykola Dzyuba (2001) + */ +static void pushclass_above (int, char *, int); +static void popclass_above (int); +static void write_classname (linebuffer *, const char *qualifier); + +static struct { + char **cname; /* nested class names */ + int *bracelev; /* nested class brace level */ + int nl; /* class nesting level (elements used) */ + int size; /* length of the array */ +} cstack; /* stack for nested declaration tags */ +/* Current struct nesting depth (namespace, class, struct, union, enum). */ +#define nestlev (cstack.nl) +/* After struct keyword or in struct body, not inside a nested function. */ +#define instruct (structdef == snone && nestlev > 0 \ + && bracelev == cstack.bracelev[nestlev-1] + 1) + +static void +pushclass_above (int bracelev, char *str, int len) +{ + int nl; + + popclass_above (bracelev); + nl = cstack.nl; + if (nl >= cstack.size) + { + int size = cstack.size *= 2; + xrnew (cstack.cname, size, char *); + xrnew (cstack.bracelev, size, int); + } + assert (nl == 0 || cstack.bracelev[nl-1] < bracelev); + cstack.cname[nl] = (str == NULL) ? NULL : savenstr (str, len); + cstack.bracelev[nl] = bracelev; + cstack.nl = nl + 1; +} + +static void +popclass_above (int bracelev) +{ + int nl; + + for (nl = cstack.nl - 1; + nl >= 0 && cstack.bracelev[nl] >= bracelev; + nl--) + { + free (cstack.cname[nl]); + cstack.nl = nl; + } +} + +static void +write_classname (linebuffer *cn, const char *qualifier) +{ + int i, len; + int qlen = strlen (qualifier); + + if (cstack.nl == 0 || cstack.cname[0] == NULL) + { + len = 0; + cn->len = 0; + cn->buffer[0] = '\0'; + } + else + { + len = strlen (cstack.cname[0]); + linebuffer_setlen (cn, len); + strcpy (cn->buffer, cstack.cname[0]); + } + for (i = 1; i < cstack.nl; i++) + { + char *s = cstack.cname[i]; + if (s == NULL) + continue; + linebuffer_setlen (cn, len + qlen + strlen (s)); + len += sprintf (cn->buffer + len, "%s%s", qualifier, s); + } +} + + +static bool consider_token (char *, int, int, int *, int, int, bool *); +static void make_C_tag (bool); + +/* + * consider_token () + * checks to see if the current token is at the start of a + * function or variable, or corresponds to a typedef, or + * is a struct/union/enum tag, or #define, or an enum constant. + * + * *IS_FUNC_OR_VAR gets true if the token is a function or #define macro + * with args. C_EXTP points to which language we are looking at. + * + * Globals + * fvdef IN OUT + * structdef IN OUT + * definedef IN OUT + * typdef IN OUT + * objdef IN OUT + */ + +static bool +consider_token (char *str, int len, int c, int *c_extp, + int bracelev, int parlev, bool *is_func_or_var) + /* IN: token pointer */ + /* IN: token length */ + /* IN: first char after the token */ + /* IN, OUT: C extensions mask */ + /* IN: brace level */ + /* IN: parenthesis level */ + /* OUT: function or variable found */ +{ + /* When structdef is stagseen, scolonseen, or snone with bracelev > 0, + structtype is the type of the preceding struct-like keyword, and + structbracelev is the brace level where it has been seen. */ + static enum sym_type structtype; + static int structbracelev; + static enum sym_type toktype; + + + toktype = C_symtype (str, len, *c_extp); + + /* + * Skip __attribute__ + */ + if (toktype == st_C_attribute) + { + inattribute = true; + return false; + } + + /* + * Advance the definedef state machine. + */ + switch (definedef) + { + case dnone: + /* We're not on a preprocessor line. */ + if (toktype == st_C_gnumacro) + { + fvdef = fdefunkey; + return false; + } + break; + case dsharpseen: + if (toktype == st_C_define) + { + definedef = ddefineseen; + } + else + { + definedef = dignorerest; + } + return false; + case ddefineseen: + /* + * Make a tag for any macro, unless it is a constant + * and constantypedefs is false. + */ + definedef = dignorerest; + *is_func_or_var = (c == '('); + if (!*is_func_or_var && !constantypedefs) + return false; + else + return true; + case dignorerest: + return false; + default: + error ("internal error: definedef value."); + } + + /* + * Now typedefs + */ + switch (typdef) + { + case tnone: + if (toktype == st_C_typedef) + { + if (typedefs) + typdef = tkeyseen; + fvextern = false; + fvdef = fvnone; + return false; + } + break; + case tkeyseen: + switch (toktype) + { + case st_none: + case st_C_class: + case st_C_struct: + case st_C_enum: + typdef = ttypeseen; + } + break; + case ttypeseen: + if (structdef == snone && fvdef == fvnone) + { + fvdef = fvnameseen; + return true; + } + break; + case tend: + switch (toktype) + { + case st_C_class: + case st_C_struct: + case st_C_enum: + return false; + } + return true; + } + + switch (toktype) + { + case st_C_javastruct: + if (structdef == stagseen) + structdef = scolonseen; + return false; + case st_C_template: + case st_C_class: + if ((*c_extp & C_AUTO) /* automatic detection of C++ language */ + && bracelev == 0 + && definedef == dnone && structdef == snone + && typdef == tnone && fvdef == fvnone) + *c_extp = (*c_extp | C_PLPL) & ~C_AUTO; + if (toktype == st_C_template) + break; + /* FALLTHRU */ + case st_C_struct: + case st_C_enum: + if (parlev == 0 + && fvdef != vignore + && (typdef == tkeyseen + || (typedefs_or_cplusplus && structdef == snone))) + { + structdef = skeyseen; + structtype = toktype; + structbracelev = bracelev; + if (fvdef == fvnameseen) + fvdef = fvnone; + } + return false; + } + + if (structdef == skeyseen) + { + structdef = stagseen; + return true; + } + + if (typdef != tnone) + definedef = dnone; + + /* Detect Objective C constructs. */ + switch (objdef) + { + case onone: + switch (toktype) + { + case st_C_objprot: + objdef = oprotocol; + return false; + case st_C_objimpl: + objdef = oimplementation; + return false; + } + break; + case oimplementation: + /* Save the class tag for functions or variables defined inside. */ + objtag = savenstr (str, len); + objdef = oinbody; + return false; + case oprotocol: + /* Save the class tag for categories. */ + objtag = savenstr (str, len); + objdef = otagseen; + *is_func_or_var = true; + return true; + case oparenseen: + objdef = ocatseen; + *is_func_or_var = true; + return true; + case oinbody: + break; + case omethodsign: + if (parlev == 0) + { + fvdef = fvnone; + objdef = omethodtag; + linebuffer_setlen (&token_name, len); + memcpy (token_name.buffer, str, len); + token_name.buffer[len] = '\0'; + return true; + } + return false; + case omethodcolon: + if (parlev == 0) + objdef = omethodparm; + return false; + case omethodparm: + if (parlev == 0) + { + int oldlen = token_name.len; + fvdef = fvnone; + objdef = omethodtag; + linebuffer_setlen (&token_name, oldlen + len); + memcpy (token_name.buffer + oldlen, str, len); + token_name.buffer[oldlen + len] = '\0'; + return true; + } + return false; + case oignore: + if (toktype == st_C_objend) + { + /* Memory leakage here: the string pointed by objtag is + never released, because many tests would be needed to + avoid breaking on incorrect input code. The amount of + memory leaked here is the sum of the lengths of the + class tags. + free (objtag); */ + objdef = onone; + } + return false; + } + + /* A function, variable or enum constant? */ + switch (toktype) + { + case st_C_extern: + fvextern = true; + switch (fvdef) + { + case finlist: + case flistseen: + case fignore: + case vignore: + break; + default: + fvdef = fvnone; + } + return false; + case st_C_ignore: + fvextern = false; + fvdef = vignore; + return false; + case st_C_operator: + fvdef = foperator; + *is_func_or_var = true; + return true; + case st_none: + if (constantypedefs + && structdef == snone + && structtype == st_C_enum && bracelev > structbracelev + /* Don't tag tokens in expressions that assign values to enum + constants. */ + && fvdef != vignore) + return true; /* enum constant */ + switch (fvdef) + { + case fdefunkey: + if (bracelev > 0) + break; + fvdef = fdefunname; /* GNU macro */ + *is_func_or_var = true; + return true; + case fvnone: + switch (typdef) + { + case ttypeseen: + return false; + case tnone: + if ((strneq (str, "asm", 3) && endtoken (str[3])) + || (strneq (str, "__asm__", 7) && endtoken (str[7]))) + { + fvdef = vignore; + return false; + } + break; + } + /* FALLTHRU */ + case fvnameseen: + if (len >= 10 && strneq (str+len-10, "::operator", 10)) + { + if (*c_extp & C_AUTO) /* automatic detection of C++ */ + *c_extp = (*c_extp | C_PLPL) & ~C_AUTO; + fvdef = foperator; + *is_func_or_var = true; + return true; + } + if (bracelev > 0 && !instruct) + break; + fvdef = fvnameseen; /* function or variable */ + *is_func_or_var = true; + return true; + } + break; + } + + return false; +} + + +/* + * C_entries often keeps pointers to tokens or lines which are older than + * the line currently read. By keeping two line buffers, and switching + * them at end of line, it is possible to use those pointers. + */ +static struct +{ + long linepos; + linebuffer lb; +} lbs[2]; + +#define current_lb_is_new (newndx == curndx) +#define switch_line_buffers() (curndx = 1 - curndx) + +#define curlb (lbs[curndx].lb) +#define newlb (lbs[newndx].lb) +#define curlinepos (lbs[curndx].linepos) +#define newlinepos (lbs[newndx].linepos) + +#define plainc ((c_ext & C_EXT) == C_PLAIN) +#define cplpl (c_ext & C_PLPL) +#define cjava ((c_ext & C_JAVA) == C_JAVA) + +#define CNL_SAVE_DEFINEDEF() \ +do { \ + curlinepos = charno; \ + readline (&curlb, inf); \ + lp = curlb.buffer; \ + quotednl = false; \ + newndx = curndx; \ +} while (0) + +#define CNL() \ +do { \ + CNL_SAVE_DEFINEDEF(); \ + if (savetoken.valid) \ + { \ + token = savetoken; \ + savetoken.valid = false; \ + } \ + definedef = dnone; \ +} while (0) + + +static void +make_C_tag (bool isfun) +{ + /* This function is never called when token.valid is false, but + we must protect against invalid input or internal errors. */ + if (token.valid) + make_tag (token_name.buffer, token_name.len, isfun, token.line, + token.offset+token.length+1, token.lineno, token.linepos); + else if (DEBUG) + { /* this branch is optimized away if !DEBUG */ + make_tag (concat ("INVALID TOKEN:-->", token_name.buffer, ""), + token_name.len + 17, isfun, token.line, + token.offset+token.length+1, token.lineno, token.linepos); + error ("INVALID TOKEN"); + } + + token.valid = false; +} + + +/* + * C_entries () + * This routine finds functions, variables, typedefs, + * #define's, enum constants and struct/union/enum definitions in + * C syntax and adds them to the list. + */ +static void +C_entries (int c_ext, FILE *inf) + /* extension of C */ + /* input file */ +{ + register char c; /* latest char read; '\0' for end of line */ + register char *lp; /* pointer one beyond the character `c' */ + int curndx, newndx; /* indices for current and new lb */ + register int tokoff; /* offset in line of start of current token */ + register int toklen; /* length of current token */ + const char *qualifier; /* string used to qualify names */ + int qlen; /* length of qualifier */ + int bracelev; /* current brace level */ + int bracketlev; /* current bracket level */ + int parlev; /* current parenthesis level */ + int attrparlev; /* __attribute__ parenthesis level */ + int templatelev; /* current template level */ + int typdefbracelev; /* bracelev where a typedef struct body begun */ + bool incomm, inquote, inchar, quotednl, midtoken; + bool yacc_rules; /* in the rules part of a yacc file */ + struct tok savetoken = {0}; /* token saved during preprocessor handling */ + + + linebuffer_init (&lbs[0].lb); + linebuffer_init (&lbs[1].lb); + if (cstack.size == 0) + { + cstack.size = (DEBUG) ? 1 : 4; + cstack.nl = 0; + cstack.cname = xnew (cstack.size, char *); + cstack.bracelev = xnew (cstack.size, int); + } + + tokoff = toklen = typdefbracelev = 0; /* keep compiler quiet */ + curndx = newndx = 0; + lp = curlb.buffer; + *lp = 0; + + fvdef = fvnone; fvextern = false; typdef = tnone; + structdef = snone; definedef = dnone; objdef = onone; + yacc_rules = false; + midtoken = inquote = inchar = incomm = quotednl = false; + token.valid = savetoken.valid = false; + bracelev = bracketlev = parlev = attrparlev = templatelev = 0; + if (cjava) + { qualifier = "."; qlen = 1; } + else + { qualifier = "::"; qlen = 2; } + + + while (!feof (inf)) + { + c = *lp++; + if (c == '\\') + { + /* If we are at the end of the line, the next character is a + '\0'; do not skip it, because it is what tells us + to read the next line. */ + if (*lp == '\0') + { + quotednl = true; + continue; + } + lp++; + c = ' '; + } + else if (incomm) + { + switch (c) + { + case '*': + if (*lp == '/') + { + c = *lp++; + incomm = false; + } + break; + case '\0': + /* Newlines inside comments do not end macro definitions in + traditional cpp. */ + CNL_SAVE_DEFINEDEF (); + break; + } + continue; + } + else if (inquote) + { + switch (c) + { + case '"': + inquote = false; + break; + case '\0': + /* Newlines inside strings do not end macro definitions + in traditional cpp, even though compilers don't + usually accept them. */ + CNL_SAVE_DEFINEDEF (); + break; + } + continue; + } + else if (inchar) + { + switch (c) + { + case '\0': + /* Hmmm, something went wrong. */ + CNL (); + /* FALLTHRU */ + case '\'': + inchar = false; + break; + } + continue; + } + else switch (c) + { + case '"': + inquote = true; + if (bracketlev > 0) + continue; + if (inattribute) + break; + switch (fvdef) + { + case fdefunkey: + case fstartlist: + case finlist: + case fignore: + case vignore: + break; + default: + fvextern = false; + fvdef = fvnone; + } + continue; + case '\'': + inchar = true; + if (bracketlev > 0) + continue; + if (inattribute) + break; + if (fvdef != finlist && fvdef != fignore && fvdef != vignore) + { + fvextern = false; + fvdef = fvnone; + } + continue; + case '/': + if (*lp == '*') + { + incomm = true; + lp++; + c = ' '; + if (bracketlev > 0) + continue; + } + else if (/* cplpl && */ *lp == '/') + { + c = '\0'; + } + break; + case '%': + if ((c_ext & YACC) && *lp == '%') + { + /* Entering or exiting rules section in yacc file. */ + lp++; + definedef = dnone; fvdef = fvnone; fvextern = false; + typdef = tnone; structdef = snone; + midtoken = inquote = inchar = incomm = quotednl = false; + bracelev = 0; + yacc_rules = !yacc_rules; + continue; + } + else + break; + case '#': + if (definedef == dnone) + { + char *cp; + bool cpptoken = true; + + /* Look back on this line. If all blanks, or nonblanks + followed by an end of comment, this is a preprocessor + token. */ + for (cp = newlb.buffer; cp < lp-1; cp++) + if (!iswhite (*cp)) + { + if (*cp == '*' && cp[1] == '/') + { + cp++; + cpptoken = true; + } + else + cpptoken = false; + } + if (cpptoken) + { + definedef = dsharpseen; + /* This is needed for tagging enum values: when there are + preprocessor conditionals inside the enum, we need to + reset the value of fvdef so that the next enum value is + tagged even though the one before it did not end in a + comma. */ + if (fvdef == vignore && instruct && parlev == 0) + { + if (strneq (cp, "#if", 3) || strneq (cp, "#el", 3)) + fvdef = fvnone; + } + } + } /* if (definedef == dnone) */ + continue; + case '[': + bracketlev++; + continue; + default: + if (bracketlev > 0) + { + if (c == ']') + --bracketlev; + else if (c == '\0') + CNL_SAVE_DEFINEDEF (); + continue; + } + break; + } /* switch (c) */ + + + /* Consider token only if some involved conditions are satisfied. */ + if (typdef != tignore + && definedef != dignorerest + && fvdef != finlist + && templatelev == 0 + && (definedef != dnone + || structdef != scolonseen) + && !inattribute) + { + if (midtoken) + { + if (endtoken (c)) + { + if (c == ':' && *lp == ':' && begtoken (lp[1])) + /* This handles :: in the middle, + but not at the beginning of an identifier. + Also, space-separated :: is not recognized. */ + { + if (c_ext & C_AUTO) /* automatic detection of C++ */ + c_ext = (c_ext | C_PLPL) & ~C_AUTO; + lp += 2; + toklen += 2; + c = lp[-1]; + goto still_in_token; + } + else + { + bool funorvar = false; + + if (yacc_rules + || consider_token (newlb.buffer + tokoff, toklen, c, + &c_ext, bracelev, parlev, + &funorvar)) + { + if (fvdef == foperator) + { + char *oldlp = lp; + lp = skip_spaces (lp-1); + if (*lp != '\0') + lp += 1; + while (*lp != '\0' + && !iswhite (*lp) && *lp != '(') + lp += 1; + c = *lp++; + toklen += lp - oldlp; + } + token.named = false; + if (!plainc + && nestlev > 0 && definedef == dnone) + /* in struct body */ + { + int len; + write_classname (&token_name, qualifier); + len = token_name.len; + linebuffer_setlen (&token_name, len+qlen+toklen); + sprintf (token_name.buffer + len, "%s%.*s", + qualifier, toklen, newlb.buffer + tokoff); + token.named = true; + } + else if (objdef == ocatseen) + /* Objective C category */ + { + int len = strlen (objtag) + 2 + toklen; + linebuffer_setlen (&token_name, len); + sprintf (token_name.buffer, "%s(%.*s)", + objtag, toklen, newlb.buffer + tokoff); + token.named = true; + } + else if (objdef == omethodtag + || objdef == omethodparm) + /* Objective C method */ + { + token.named = true; + } + else if (fvdef == fdefunname) + /* GNU DEFUN and similar macros */ + { + bool defun = (newlb.buffer[tokoff] == 'F'); + int off = tokoff; + int len = toklen; + + /* Rewrite the tag so that emacs lisp DEFUNs + can be found by their elisp name */ + if (defun) + { + off += 1; + len -= 1; + } + linebuffer_setlen (&token_name, len); + memcpy (token_name.buffer, + newlb.buffer + off, len); + token_name.buffer[len] = '\0'; + if (defun) + while (--len >= 0) + if (token_name.buffer[len] == '_') + token_name.buffer[len] = '-'; + token.named = defun; + } + else + { + linebuffer_setlen (&token_name, toklen); + memcpy (token_name.buffer, + newlb.buffer + tokoff, toklen); + token_name.buffer[toklen] = '\0'; + /* Name macros and members. */ + token.named = (structdef == stagseen + || typdef == ttypeseen + || typdef == tend + || (funorvar + && definedef == dignorerest) + || (funorvar + && definedef == dnone + && structdef == snone + && bracelev > 0)); + } + token.lineno = lineno; + token.offset = tokoff; + token.length = toklen; + token.line = newlb.buffer; + token.linepos = newlinepos; + token.valid = true; + + if (definedef == dnone + && (fvdef == fvnameseen + || fvdef == foperator + || structdef == stagseen + || typdef == tend + || typdef == ttypeseen + || objdef != onone)) + { + if (current_lb_is_new) + switch_line_buffers (); + } + else if (definedef != dnone + || fvdef == fdefunname + || instruct) + make_C_tag (funorvar); + } + else /* not yacc and consider_token failed */ + { + if (inattribute && fvdef == fignore) + { + /* We have just met __attribute__ after a + function parameter list: do not tag the + function again. */ + fvdef = fvnone; + } + } + midtoken = false; + } + } /* if (endtoken (c)) */ + else if (intoken (c)) + still_in_token: + { + toklen++; + continue; + } + } /* if (midtoken) */ + else if (begtoken (c)) + { + switch (definedef) + { + case dnone: + switch (fvdef) + { + case fstartlist: + /* This prevents tagging fb in + void (__attribute__((noreturn)) *fb) (void); + Fixing this is not easy and not very important. */ + fvdef = finlist; + continue; + case flistseen: + if (plainc || declarations) + { + make_C_tag (true); /* a function */ + fvdef = fignore; + } + break; + } + if (structdef == stagseen && !cjava) + { + popclass_above (bracelev); + structdef = snone; + } + break; + case dsharpseen: + savetoken = token; + break; + } + if (!yacc_rules || lp == newlb.buffer + 1) + { + tokoff = lp - 1 - newlb.buffer; + toklen = 1; + midtoken = true; + } + continue; + } /* if (begtoken) */ + } /* if must look at token */ + + + /* Detect end of line, colon, comma, semicolon and various braces + after having handled a token.*/ + switch (c) + { + case ':': + if (inattribute) + break; + if (yacc_rules && token.offset == 0 && token.valid) + { + make_C_tag (false); /* a yacc function */ + break; + } + if (definedef != dnone) + break; + switch (objdef) + { + case otagseen: + objdef = oignore; + make_C_tag (true); /* an Objective C class */ + break; + case omethodtag: + case omethodparm: + objdef = omethodcolon; + int toklen = token_name.len; + linebuffer_setlen (&token_name, toklen + 1); + strcpy (token_name.buffer + toklen, ":"); + break; + } + if (structdef == stagseen) + { + structdef = scolonseen; + break; + } + /* Should be useless, but may be work as a safety net. */ + if (cplpl && fvdef == flistseen) + { + make_C_tag (true); /* a function */ + fvdef = fignore; + break; + } + break; + case ';': + if (definedef != dnone || inattribute) + break; + switch (typdef) + { + case tend: + case ttypeseen: + make_C_tag (false); /* a typedef */ + typdef = tnone; + fvdef = fvnone; + break; + case tnone: + case tinbody: + case tignore: + switch (fvdef) + { + case fignore: + if (typdef == tignore || cplpl) + fvdef = fvnone; + break; + case fvnameseen: + if ((globals && bracelev == 0 && (!fvextern || declarations)) + || (members && instruct)) + make_C_tag (false); /* a variable */ + fvextern = false; + fvdef = fvnone; + token.valid = false; + break; + case flistseen: + if ((declarations + && (cplpl || !instruct) + && (typdef == tnone || (typdef != tignore && instruct))) + || (members + && plainc && instruct)) + make_C_tag (true); /* a function */ + /* FALLTHRU */ + default: + fvextern = false; + fvdef = fvnone; + if (declarations + && cplpl && structdef == stagseen) + make_C_tag (false); /* forward declaration */ + else + token.valid = false; + } /* switch (fvdef) */ + /* FALLTHRU */ + default: + if (!instruct) + typdef = tnone; + } + if (structdef == stagseen) + structdef = snone; + break; + case ',': + if (definedef != dnone || inattribute) + break; + switch (objdef) + { + case omethodtag: + case omethodparm: + make_C_tag (true); /* an Objective C method */ + objdef = oinbody; + break; + } + switch (fvdef) + { + case fdefunkey: + case foperator: + case fstartlist: + case finlist: + case fignore: + break; + case vignore: + if (instruct && parlev == 0) + fvdef = fvnone; + break; + case fdefunname: + fvdef = fignore; + break; + case fvnameseen: + if (parlev == 0 + && ((globals + && bracelev == 0 + && templatelev == 0 + && (!fvextern || declarations)) + || (members && instruct))) + make_C_tag (false); /* a variable */ + break; + case flistseen: + if ((declarations && typdef == tnone && !instruct) + || (members && typdef != tignore && instruct)) + { + make_C_tag (true); /* a function */ + fvdef = fvnameseen; + } + else if (!declarations) + fvdef = fvnone; + token.valid = false; + break; + default: + fvdef = fvnone; + } + if (structdef == stagseen) + structdef = snone; + break; + case ']': + if (definedef != dnone || inattribute) + break; + if (structdef == stagseen) + structdef = snone; + switch (typdef) + { + case ttypeseen: + case tend: + typdef = tignore; + make_C_tag (false); /* a typedef */ + break; + case tnone: + case tinbody: + switch (fvdef) + { + case foperator: + case finlist: + case fignore: + case vignore: + break; + case fvnameseen: + if ((members && bracelev == 1) + || (globals && bracelev == 0 + && (!fvextern || declarations))) + make_C_tag (false); /* a variable */ + /* FALLTHRU */ + default: + fvdef = fvnone; + } + break; + } + break; + case '(': + if (inattribute) + { + attrparlev++; + break; + } + if (definedef != dnone) + break; + if (objdef == otagseen && parlev == 0) + objdef = oparenseen; + switch (fvdef) + { + case fvnameseen: + if (typdef == ttypeseen + && *lp != '*' + && !instruct) + { + /* This handles constructs like: + typedef void OperatorFun (int fun); */ + make_C_tag (false); + typdef = tignore; + fvdef = fignore; + break; + } + /* FALLTHRU */ + case foperator: + fvdef = fstartlist; + break; + case flistseen: + fvdef = finlist; + break; + } + parlev++; + break; + case ')': + if (inattribute) + { + if (--attrparlev == 0) + inattribute = false; + break; + } + if (definedef != dnone) + break; + if (objdef == ocatseen && parlev == 1) + { + make_C_tag (true); /* an Objective C category */ + objdef = oignore; + } + if (--parlev == 0) + { + switch (fvdef) + { + case fstartlist: + case finlist: + fvdef = flistseen; + break; + } + if (!instruct + && (typdef == tend + || typdef == ttypeseen)) + { + typdef = tignore; + make_C_tag (false); /* a typedef */ + } + } + else if (parlev < 0) /* can happen due to ill-conceived #if's. */ + parlev = 0; + break; + case '{': + if (definedef != dnone) + break; + if (typdef == ttypeseen) + { + /* Whenever typdef is set to tinbody (currently only + here), typdefbracelev should be set to bracelev. */ + typdef = tinbody; + typdefbracelev = bracelev; + } + switch (fvdef) + { + case flistseen: + make_C_tag (true); /* a function */ + /* FALLTHRU */ + case fignore: + fvdef = fvnone; + break; + case fvnone: + switch (objdef) + { + case otagseen: + make_C_tag (true); /* an Objective C class */ + objdef = oignore; + break; + case omethodtag: + case omethodparm: + make_C_tag (true); /* an Objective C method */ + objdef = oinbody; + break; + default: + /* Neutralize `extern "C" {' grot. */ + if (bracelev == 0 && structdef == snone && nestlev == 0 + && typdef == tnone) + bracelev = -1; + } + break; + } + switch (structdef) + { + case skeyseen: /* unnamed struct */ + pushclass_above (bracelev, NULL, 0); + structdef = snone; + break; + case stagseen: /* named struct or enum */ + case scolonseen: /* a class */ + pushclass_above (bracelev,token.line+token.offset, token.length); + structdef = snone; + make_C_tag (false); /* a struct or enum */ + break; + } + bracelev += 1; + break; + case '*': + if (definedef != dnone) + break; + if (fvdef == fstartlist) + { + fvdef = fvnone; /* avoid tagging `foo' in `foo (*bar()) ()' */ + token.valid = false; + } + break; + case '}': + if (definedef != dnone) + break; + bracelev -= 1; + if (!ignoreindent && lp == newlb.buffer + 1) + { + if (bracelev != 0) + token.valid = false; /* unexpected value, token unreliable */ + bracelev = 0; /* reset brace level if first column */ + parlev = 0; /* also reset paren level, just in case... */ + } + else if (bracelev < 0) + { + token.valid = false; /* something gone amiss, token unreliable */ + bracelev = 0; + } + if (bracelev == 0 && fvdef == vignore) + fvdef = fvnone; /* end of function */ + popclass_above (bracelev); + structdef = snone; + /* Only if typdef == tinbody is typdefbracelev significant. */ + if (typdef == tinbody && bracelev <= typdefbracelev) + { + assert (bracelev == typdefbracelev); + typdef = tend; + } + break; + case '=': + if (definedef != dnone) + break; + switch (fvdef) + { + case foperator: + case finlist: + case fignore: + case vignore: + break; + case fvnameseen: + if ((members && bracelev == 1) + || (globals && bracelev == 0 && (!fvextern || declarations))) + make_C_tag (false); /* a variable */ + /* FALLTHRU */ + default: + fvdef = vignore; + } + break; + case '<': + if (cplpl + && (structdef == stagseen || fvdef == fvnameseen)) + { + templatelev++; + break; + } + goto resetfvdef; + case '>': + if (templatelev > 0) + { + templatelev--; + break; + } + goto resetfvdef; + case '+': + case '-': + if (objdef == oinbody && bracelev == 0) + { + objdef = omethodsign; + break; + } + /* FALLTHRU */ + resetfvdef: + case '#': case '~': case '&': case '%': case '/': + case '|': case '^': case '!': case '.': case '?': + if (definedef != dnone) + break; + /* These surely cannot follow a function tag in C. */ + switch (fvdef) + { + case foperator: + case finlist: + case fignore: + case vignore: + break; + default: + fvdef = fvnone; + } + break; + case '\0': + if (objdef == otagseen) + { + make_C_tag (true); /* an Objective C class */ + objdef = oignore; + } + /* If a macro spans multiple lines don't reset its state. */ + if (quotednl) + CNL_SAVE_DEFINEDEF (); + else + CNL (); + break; + } /* switch (c) */ + + } /* while not eof */ + + free (lbs[0].lb.buffer); + free (lbs[1].lb.buffer); +} + +/* + * Process either a C++ file or a C file depending on the setting + * of a global flag. + */ +static void +default_C_entries (FILE *inf) +{ + C_entries (cplusplus ? C_PLPL : C_AUTO, inf); +} + +/* Always do plain C. */ +static void +plain_C_entries (FILE *inf) +{ + C_entries (0, inf); +} + +/* Always do C++. */ +static void +Cplusplus_entries (FILE *inf) +{ + C_entries (C_PLPL, inf); +} + +/* Always do Java. */ +static void +Cjava_entries (FILE *inf) +{ + C_entries (C_JAVA, inf); +} + +/* Always do C*. */ +static void +Cstar_entries (FILE *inf) +{ + C_entries (C_STAR, inf); +} + +/* Always do Yacc. */ +static void +Yacc_entries (FILE *inf) +{ + C_entries (YACC, inf); +} + + +/* Useful macros. */ +#define LOOP_ON_INPUT_LINES(file_pointer, line_buffer, char_pointer) \ + for (; /* loop initialization */ \ + !feof (file_pointer) /* loop test */ \ + && /* instructions at start of loop */ \ + (readline (&line_buffer, file_pointer), \ + char_pointer = line_buffer.buffer, \ + true); \ + ) + +#define LOOKING_AT(cp, kw) /* kw is the keyword, a literal string */ \ + ((assert ("" kw), true) /* syntax error if not a literal string */ \ + && strneq ((cp), kw, sizeof (kw)-1) /* cp points at kw */ \ + && notinname ((cp)[sizeof (kw)-1]) /* end of kw */ \ + && ((cp) = skip_spaces ((cp)+sizeof (kw)-1))) /* skip spaces */ + +/* Similar to LOOKING_AT but does not use notinname, does not skip */ +#define LOOKING_AT_NOCASE(cp, kw) /* the keyword is a literal string */ \ + ((assert ("" kw), true) /* syntax error if not a literal string */ \ + && strncaseeq ((cp), kw, sizeof (kw)-1) /* cp points at kw */ \ + && ((cp) += sizeof (kw)-1)) /* skip spaces */ + +/* + * Read a file, but do no processing. This is used to do regexp + * matching on files that have no language defined. + */ +static void +just_read_file (FILE *inf) +{ + while (!feof (inf)) + readline (&lb, inf); +} + + +/* Fortran parsing */ + +static void F_takeprec (void); +static void F_getit (FILE *); + +static void +F_takeprec (void) +{ + dbp = skip_spaces (dbp); + if (*dbp != '*') + return; + dbp++; + dbp = skip_spaces (dbp); + if (strneq (dbp, "(*)", 3)) + { + dbp += 3; + return; + } + if (!ISDIGIT (*dbp)) + { + --dbp; /* force failure */ + return; + } + do + dbp++; + while (ISDIGIT (*dbp)); +} + +static void +F_getit (FILE *inf) +{ + register char *cp; + + dbp = skip_spaces (dbp); + if (*dbp == '\0') + { + readline (&lb, inf); + dbp = lb.buffer; + if (dbp[5] != '&') + return; + dbp += 6; + dbp = skip_spaces (dbp); + } + if (!ISALPHA (*dbp) && *dbp != '_' && *dbp != '$') + return; + for (cp = dbp + 1; *cp != '\0' && intoken (*cp); cp++) + continue; + make_tag (dbp, cp-dbp, true, + lb.buffer, cp - lb.buffer + 1, lineno, linecharno); +} + + +static void +Fortran_functions (FILE *inf) +{ + LOOP_ON_INPUT_LINES (inf, lb, dbp) + { + if (*dbp == '%') + dbp++; /* Ratfor escape to fortran */ + dbp = skip_spaces (dbp); + if (*dbp == '\0') + continue; + + if (LOOKING_AT_NOCASE (dbp, "recursive")) + dbp = skip_spaces (dbp); + + if (LOOKING_AT_NOCASE (dbp, "pure")) + dbp = skip_spaces (dbp); + + if (LOOKING_AT_NOCASE (dbp, "elemental")) + dbp = skip_spaces (dbp); + + switch (lowcase (*dbp)) + { + case 'i': + if (nocase_tail ("integer")) + F_takeprec (); + break; + case 'r': + if (nocase_tail ("real")) + F_takeprec (); + break; + case 'l': + if (nocase_tail ("logical")) + F_takeprec (); + break; + case 'c': + if (nocase_tail ("complex") || nocase_tail ("character")) + F_takeprec (); + break; + case 'd': + if (nocase_tail ("double")) + { + dbp = skip_spaces (dbp); + if (*dbp == '\0') + continue; + if (nocase_tail ("precision")) + break; + continue; + } + break; + } + dbp = skip_spaces (dbp); + if (*dbp == '\0') + continue; + switch (lowcase (*dbp)) + { + case 'f': + if (nocase_tail ("function")) + F_getit (inf); + continue; + case 's': + if (nocase_tail ("subroutine")) + F_getit (inf); + continue; + case 'e': + if (nocase_tail ("entry")) + F_getit (inf); + continue; + case 'b': + if (nocase_tail ("blockdata") || nocase_tail ("block data")) + { + dbp = skip_spaces (dbp); + if (*dbp == '\0') /* assume un-named */ + make_tag ("blockdata", 9, true, + lb.buffer, dbp - lb.buffer, lineno, linecharno); + else + F_getit (inf); /* look for name */ + } + continue; + } + } +} + + +/* + * Ada parsing + * Original code by + * Philippe Waroquiers (1998) + */ + +/* Once we are positioned after an "interesting" keyword, let's get + the real tag value necessary. */ +static void +Ada_getit (FILE *inf, const char *name_qualifier) +{ + register char *cp; + char *name; + char c; + + while (!feof (inf)) + { + dbp = skip_spaces (dbp); + if (*dbp == '\0' + || (dbp[0] == '-' && dbp[1] == '-')) + { + readline (&lb, inf); + dbp = lb.buffer; + } + switch (lowcase (*dbp)) + { + case 'b': + if (nocase_tail ("body")) + { + /* Skipping body of procedure body or package body or .... + resetting qualifier to body instead of spec. */ + name_qualifier = "/b"; + continue; + } + break; + case 't': + /* Skipping type of task type or protected type ... */ + if (nocase_tail ("type")) + continue; + break; + } + if (*dbp == '"') + { + dbp += 1; + for (cp = dbp; *cp != '\0' && *cp != '"'; cp++) + continue; + } + else + { + dbp = skip_spaces (dbp); + for (cp = dbp; + (*cp != '\0' + && (ISALPHA (*cp) || ISDIGIT (*cp) || *cp == '_' || *cp == '.')); + cp++) + continue; + if (cp == dbp) + return; + } + c = *cp; + *cp = '\0'; + name = concat (dbp, name_qualifier, ""); + *cp = c; + make_tag (name, strlen (name), true, + lb.buffer, cp - lb.buffer + 1, lineno, linecharno); + free (name); + if (c == '"') + dbp = cp + 1; + return; + } +} + +static void +Ada_funcs (FILE *inf) +{ + bool inquote = false; + bool skip_till_semicolumn = false; + + LOOP_ON_INPUT_LINES (inf, lb, dbp) + { + while (*dbp != '\0') + { + /* Skip a string i.e. "abcd". */ + if (inquote || (*dbp == '"')) + { + dbp = strchr (dbp + !inquote, '"'); + if (dbp != NULL) + { + inquote = false; + dbp += 1; + continue; /* advance char */ + } + else + { + inquote = true; + break; /* advance line */ + } + } + + /* Skip comments. */ + if (dbp[0] == '-' && dbp[1] == '-') + break; /* advance line */ + + /* Skip character enclosed in single quote i.e. 'a' + and skip single quote starting an attribute i.e. 'Image. */ + if (*dbp == '\'') + { + dbp++ ; + if (*dbp != '\0') + dbp++; + continue; + } + + if (skip_till_semicolumn) + { + if (*dbp == ';') + skip_till_semicolumn = false; + dbp++; + continue; /* advance char */ + } + + /* Search for beginning of a token. */ + if (!begtoken (*dbp)) + { + dbp++; + continue; /* advance char */ + } + + /* We are at the beginning of a token. */ + switch (lowcase (*dbp)) + { + case 'f': + if (!packages_only && nocase_tail ("function")) + Ada_getit (inf, "/f"); + else + break; /* from switch */ + continue; /* advance char */ + case 'p': + if (!packages_only && nocase_tail ("procedure")) + Ada_getit (inf, "/p"); + else if (nocase_tail ("package")) + Ada_getit (inf, "/s"); + else if (nocase_tail ("protected")) /* protected type */ + Ada_getit (inf, "/t"); + else + break; /* from switch */ + continue; /* advance char */ + + case 'u': + if (typedefs && !packages_only && nocase_tail ("use")) + { + /* when tagging types, avoid tagging use type Pack.Typename; + for this, we will skip everything till a ; */ + skip_till_semicolumn = true; + continue; /* advance char */ + } + + case 't': + if (!packages_only && nocase_tail ("task")) + Ada_getit (inf, "/k"); + else if (typedefs && !packages_only && nocase_tail ("type")) + { + Ada_getit (inf, "/t"); + while (*dbp != '\0') + dbp += 1; + } + else + break; /* from switch */ + continue; /* advance char */ + } + + /* Look for the end of the token. */ + while (!endtoken (*dbp)) + dbp++; + + } /* advance char */ + } /* advance line */ +} + + +/* + * Unix and microcontroller assembly tag handling + * Labels: /^[a-zA-Z_.$][a-zA_Z0-9_.$]*[: ^I^J]/ + * Idea by Bob Weiner, Motorola Inc. (1994) + */ +static void +Asm_labels (FILE *inf) +{ + register char *cp; + + LOOP_ON_INPUT_LINES (inf, lb, cp) + { + /* If first char is alphabetic or one of [_.$], test for colon + following identifier. */ + if (ISALPHA (*cp) || *cp == '_' || *cp == '.' || *cp == '$') + { + /* Read past label. */ + cp++; + while (ISALNUM (*cp) || *cp == '_' || *cp == '.' || *cp == '$') + cp++; + if (*cp == ':' || iswhite (*cp)) + /* Found end of label, so copy it and add it to the table. */ + make_tag (lb.buffer, cp - lb.buffer, true, + lb.buffer, cp - lb.buffer + 1, lineno, linecharno); + } + } +} + + +/* + * Perl support + * Perl sub names: /^sub[ \t\n]+[^ \t\n{]+/ + * /^use constant[ \t\n]+[^ \t\n{=,;]+/ + * Perl variable names: /^(my|local).../ + * Original code by Bart Robinson (1995) + * Additions by Michael Ernst (1997) + * Ideas by Kai Großjohann (2001) + */ +static void +Perl_functions (FILE *inf) +{ + char *package = savestr ("main"); /* current package name */ + register char *cp; + + LOOP_ON_INPUT_LINES (inf, lb, cp) + { + cp = skip_spaces (cp); + + if (LOOKING_AT (cp, "package")) + { + free (package); + get_tag (cp, &package); + } + else if (LOOKING_AT (cp, "sub")) + { + char *pos, *sp; + + subr: + sp = cp; + while (!notinname (*cp)) + cp++; + if (cp == sp) + continue; /* nothing found */ + if ((pos = strchr (sp, ':')) != NULL + && pos < cp && pos[1] == ':') + /* The name is already qualified. */ + make_tag (sp, cp - sp, true, + lb.buffer, cp - lb.buffer + 1, lineno, linecharno); + else + /* Qualify it. */ + { + char savechar, *name; + + savechar = *cp; + *cp = '\0'; + name = concat (package, "::", sp); + *cp = savechar; + make_tag (name, strlen (name), true, + lb.buffer, cp - lb.buffer + 1, lineno, linecharno); + free (name); + } + } + else if (LOOKING_AT (cp, "use constant") + || LOOKING_AT (cp, "use constant::defer")) + { + /* For hash style multi-constant like + use constant { FOO => 123, + BAR => 456 }; + only the first FOO is picked up. Parsing across the value + expressions would be difficult in general, due to possible nested + hashes, here-documents, etc. */ + if (*cp == '{') + cp = skip_spaces (cp+1); + goto subr; + } + else if (globals) /* only if we are tagging global vars */ + { + /* Skip a qualifier, if any. */ + bool qual = LOOKING_AT (cp, "my") || LOOKING_AT (cp, "local"); + /* After "my" or "local", but before any following paren or space. */ + char *varstart = cp; + + if (qual /* should this be removed? If yes, how? */ + && (*cp == '$' || *cp == '@' || *cp == '%')) + { + varstart += 1; + do + cp++; + while (ISALNUM (*cp) || *cp == '_'); + } + else if (qual) + { + /* Should be examining a variable list at this point; + could insist on seeing an open parenthesis. */ + while (*cp != '\0' && *cp != ';' && *cp != '=' && *cp != ')') + cp++; + } + else + continue; + + make_tag (varstart, cp - varstart, false, + lb.buffer, cp - lb.buffer + 1, lineno, linecharno); + } + } + free (package); +} + + +/* + * Python support + * Look for /^[\t]*def[ \t\n]+[^ \t\n(:]+/ or /^class[ \t\n]+[^ \t\n(:]+/ + * Idea by Eric S. Raymond (1997) + * More ideas by seb bacon (2002) + */ +static void +Python_functions (FILE *inf) +{ + register char *cp; + + LOOP_ON_INPUT_LINES (inf, lb, cp) + { + cp = skip_spaces (cp); + if (LOOKING_AT (cp, "def") || LOOKING_AT (cp, "class")) + { + char *name = cp; + while (!notinname (*cp) && *cp != ':') + cp++; + make_tag (name, cp - name, true, + lb.buffer, cp - lb.buffer + 1, lineno, linecharno); + } + } +} + + +/* + * PHP support + * Look for: + * - /^[ \t]*function[ \t\n]+[^ \t\n(]+/ + * - /^[ \t]*class[ \t\n]+[^ \t\n]+/ + * - /^[ \t]*define\(\"[^\"]+/ + * Only with --members: + * - /^[ \t]*var[ \t\n]+\$[^ \t\n=;]/ + * Idea by Diez B. Roggisch (2001) + */ +static void +PHP_functions (FILE *inf) +{ + char *cp, *name; + bool search_identifier = false; + + LOOP_ON_INPUT_LINES (inf, lb, cp) + { + cp = skip_spaces (cp); + name = cp; + if (search_identifier + && *cp != '\0') + { + while (!notinname (*cp)) + cp++; + make_tag (name, cp - name, true, + lb.buffer, cp - lb.buffer + 1, lineno, linecharno); + search_identifier = false; + } + else if (LOOKING_AT (cp, "function")) + { + if (*cp == '&') + cp = skip_spaces (cp+1); + if (*cp != '\0') + { + name = cp; + while (!notinname (*cp)) + cp++; + make_tag (name, cp - name, true, + lb.buffer, cp - lb.buffer + 1, lineno, linecharno); + } + else + search_identifier = true; + } + else if (LOOKING_AT (cp, "class")) + { + if (*cp != '\0') + { + name = cp; + while (*cp != '\0' && !iswhite (*cp)) + cp++; + make_tag (name, cp - name, false, + lb.buffer, cp - lb.buffer + 1, lineno, linecharno); + } + else + search_identifier = true; + } + else if (strneq (cp, "define", 6) + && (cp = skip_spaces (cp+6)) + && *cp++ == '(' + && (*cp == '"' || *cp == '\'')) + { + char quote = *cp++; + name = cp; + while (*cp != quote && *cp != '\0') + cp++; + make_tag (name, cp - name, false, + lb.buffer, cp - lb.buffer + 1, lineno, linecharno); + } + else if (members + && LOOKING_AT (cp, "var") + && *cp == '$') + { + name = cp; + while (!notinname (*cp)) + cp++; + make_tag (name, cp - name, false, + lb.buffer, cp - lb.buffer + 1, lineno, linecharno); + } + } +} + + +/* + * Cobol tag functions + * We could look for anything that could be a paragraph name. + * i.e. anything that starts in column 8 is one word and ends in a full stop. + * Idea by Corny de Souza (1993) + */ +static void +Cobol_paragraphs (FILE *inf) +{ + register char *bp, *ep; + + LOOP_ON_INPUT_LINES (inf, lb, bp) + { + if (lb.len < 9) + continue; + bp += 8; + + /* If eoln, compiler option or comment ignore whole line. */ + if (bp[-1] != ' ' || !ISALNUM (bp[0])) + continue; + + for (ep = bp; ISALNUM (*ep) || *ep == '-'; ep++) + continue; + if (*ep++ == '.') + make_tag (bp, ep - bp, true, + lb.buffer, ep - lb.buffer + 1, lineno, linecharno); + } +} + + +/* + * Makefile support + * Ideas by Assar Westerlund (2001) + */ +static void +Makefile_targets (FILE *inf) +{ + register char *bp; + + LOOP_ON_INPUT_LINES (inf, lb, bp) + { + if (*bp == '\t' || *bp == '#') + continue; + while (*bp != '\0' && *bp != '=' && *bp != ':') + bp++; + if (*bp == ':' || (globals && *bp == '=')) + { + /* We should detect if there is more than one tag, but we do not. + We just skip initial and final spaces. */ + char * namestart = skip_spaces (lb.buffer); + while (--bp > namestart) + if (!notinname (*bp)) + break; + make_tag (namestart, bp - namestart + 1, true, + lb.buffer, bp - lb.buffer + 2, lineno, linecharno); + } + } +} + + +/* + * Pascal parsing + * Original code by Mosur K. Mohan (1989) + * + * Locates tags for procedures & functions. Doesn't do any type- or + * var-definitions. It does look for the keyword "extern" or + * "forward" immediately following the procedure statement; if found, + * the tag is skipped. + */ +static void +Pascal_functions (FILE *inf) +{ + linebuffer tline; /* mostly copied from C_entries */ + long save_lcno; + int save_lineno, namelen, taglen; + char c, *name; + + bool /* each of these flags is true if: */ + incomment, /* point is inside a comment */ + inquote, /* point is inside '..' string */ + get_tagname, /* point is after PROCEDURE/FUNCTION + keyword, so next item = potential tag */ + found_tag, /* point is after a potential tag */ + inparms, /* point is within parameter-list */ + verify_tag; /* point has passed the parm-list, so the + next token will determine whether this + is a FORWARD/EXTERN to be ignored, or + whether it is a real tag */ + + save_lcno = save_lineno = namelen = taglen = 0; /* keep compiler quiet */ + name = NULL; /* keep compiler quiet */ + dbp = lb.buffer; + *dbp = '\0'; + linebuffer_init (&tline); + + incomment = inquote = false; + found_tag = false; /* have a proc name; check if extern */ + get_tagname = false; /* found "procedure" keyword */ + inparms = false; /* found '(' after "proc" */ + verify_tag = false; /* check if "extern" is ahead */ + + + while (!feof (inf)) /* long main loop to get next char */ + { + c = *dbp++; + if (c == '\0') /* if end of line */ + { + readline (&lb, inf); + dbp = lb.buffer; + if (*dbp == '\0') + continue; + if (!((found_tag && verify_tag) + || get_tagname)) + c = *dbp++; /* only if don't need *dbp pointing + to the beginning of the name of + the procedure or function */ + } + if (incomment) + { + if (c == '}') /* within { } comments */ + incomment = false; + else if (c == '*' && *dbp == ')') /* within (* *) comments */ + { + dbp++; + incomment = false; + } + continue; + } + else if (inquote) + { + if (c == '\'') + inquote = false; + continue; + } + else + switch (c) + { + case '\'': + inquote = true; /* found first quote */ + continue; + case '{': /* found open { comment */ + incomment = true; + continue; + case '(': + if (*dbp == '*') /* found open (* comment */ + { + incomment = true; + dbp++; + } + else if (found_tag) /* found '(' after tag, i.e., parm-list */ + inparms = true; + continue; + case ')': /* end of parms list */ + if (inparms) + inparms = false; + continue; + case ';': + if (found_tag && !inparms) /* end of proc or fn stmt */ + { + verify_tag = true; + break; + } + continue; + } + if (found_tag && verify_tag && (*dbp != ' ')) + { + /* Check if this is an "extern" declaration. */ + if (*dbp == '\0') + continue; + if (lowcase (*dbp) == 'e') + { + if (nocase_tail ("extern")) /* superfluous, really! */ + { + found_tag = false; + verify_tag = false; + } + } + else if (lowcase (*dbp) == 'f') + { + if (nocase_tail ("forward")) /* check for forward reference */ + { + found_tag = false; + verify_tag = false; + } + } + if (found_tag && verify_tag) /* not external proc, so make tag */ + { + found_tag = false; + verify_tag = false; + make_tag (name, namelen, true, + tline.buffer, taglen, save_lineno, save_lcno); + continue; + } + } + if (get_tagname) /* grab name of proc or fn */ + { + char *cp; + + if (*dbp == '\0') + continue; + + /* Find block name. */ + for (cp = dbp + 1; *cp != '\0' && !endtoken (*cp); cp++) + continue; + + /* Save all values for later tagging. */ + linebuffer_setlen (&tline, lb.len); + strcpy (tline.buffer, lb.buffer); + save_lineno = lineno; + save_lcno = linecharno; + name = tline.buffer + (dbp - lb.buffer); + namelen = cp - dbp; + taglen = cp - lb.buffer + 1; + + dbp = cp; /* set dbp to e-o-token */ + get_tagname = false; + found_tag = true; + continue; + + /* And proceed to check for "extern". */ + } + else if (!incomment && !inquote && !found_tag) + { + /* Check for proc/fn keywords. */ + switch (lowcase (c)) + { + case 'p': + if (nocase_tail ("rocedure")) /* c = 'p', dbp has advanced */ + get_tagname = true; + continue; + case 'f': + if (nocase_tail ("unction")) + get_tagname = true; + continue; + } + } + } /* while not eof */ + + free (tline.buffer); +} + + +/* + * Lisp tag functions + * look for (def or (DEF, quote or QUOTE + */ + +static void L_getit (void); + +static void +L_getit (void) +{ + if (*dbp == '\'') /* Skip prefix quote */ + dbp++; + else if (*dbp == '(') + { + dbp++; + /* Try to skip "(quote " */ + if (!LOOKING_AT (dbp, "quote") && !LOOKING_AT (dbp, "QUOTE")) + /* Ok, then skip "(" before name in (defstruct (foo)) */ + dbp = skip_spaces (dbp); + } + get_tag (dbp, NULL); +} + +static void +Lisp_functions (FILE *inf) +{ + LOOP_ON_INPUT_LINES (inf, lb, dbp) + { + if (dbp[0] != '(') + continue; + + /* "(defvar foo)" is a declaration rather than a definition. */ + if (! declarations) + { + char *p = dbp + 1; + if (LOOKING_AT (p, "defvar")) + { + p = skip_name (p); /* past var name */ + p = skip_spaces (p); + if (*p == ')') + continue; + } + } + + if (strneq (dbp + 1, "cl-", 3) || strneq (dbp + 1, "CL-", 3)) + dbp += 3; + + if (strneq (dbp+1, "def", 3) || strneq (dbp+1, "DEF", 3)) + { + dbp = skip_non_spaces (dbp); + dbp = skip_spaces (dbp); + L_getit (); + } + else + { + /* Check for (foo::defmumble name-defined ... */ + do + dbp++; + while (!notinname (*dbp) && *dbp != ':'); + if (*dbp == ':') + { + do + dbp++; + while (*dbp == ':'); + + if (strneq (dbp, "def", 3) || strneq (dbp, "DEF", 3)) + { + dbp = skip_non_spaces (dbp); + dbp = skip_spaces (dbp); + L_getit (); + } + } + } + } +} + + +/* + * Lua script language parsing + * Original code by David A. Capello (2004) + * + * "function" and "local function" are tags if they start at column 1. + */ +static void +Lua_functions (FILE *inf) +{ + register char *bp; + + LOOP_ON_INPUT_LINES (inf, lb, bp) + { + if (bp[0] != 'f' && bp[0] != 'l') + continue; + + (void)LOOKING_AT (bp, "local"); /* skip possible "local" */ + + if (LOOKING_AT (bp, "function")) + get_tag (bp, NULL); + } +} + + +/* + * PostScript tags + * Just look for lines where the first character is '/' + * Also look at "defineps" for PSWrap + * Ideas by: + * Richard Mlynarik (1997) + * Masatake Yamato (1999) + */ +static void +PS_functions (FILE *inf) +{ + register char *bp, *ep; + + LOOP_ON_INPUT_LINES (inf, lb, bp) + { + if (bp[0] == '/') + { + for (ep = bp+1; + *ep != '\0' && *ep != ' ' && *ep != '{'; + ep++) + continue; + make_tag (bp, ep - bp, true, + lb.buffer, ep - lb.buffer + 1, lineno, linecharno); + } + else if (LOOKING_AT (bp, "defineps")) + get_tag (bp, NULL); + } +} + + +/* + * Forth tags + * Ignore anything after \ followed by space or in ( ) + * Look for words defined by : + * Look for constant, code, create, defer, value, and variable + * OBP extensions: Look for buffer:, field, + * Ideas by Eduardo Horvath (2004) + */ +static void +Forth_words (FILE *inf) +{ + register char *bp; + + LOOP_ON_INPUT_LINES (inf, lb, bp) + while ((bp = skip_spaces (bp))[0] != '\0') + if (bp[0] == '\\' && iswhite (bp[1])) + break; /* read next line */ + else if (bp[0] == '(' && iswhite (bp[1])) + do /* skip to ) or eol */ + bp++; + while (*bp != ')' && *bp != '\0'); + else if ((bp[0] == ':' && iswhite (bp[1]) && bp++) + || LOOKING_AT_NOCASE (bp, "constant") + || LOOKING_AT_NOCASE (bp, "code") + || LOOKING_AT_NOCASE (bp, "create") + || LOOKING_AT_NOCASE (bp, "defer") + || LOOKING_AT_NOCASE (bp, "value") + || LOOKING_AT_NOCASE (bp, "variable") + || LOOKING_AT_NOCASE (bp, "buffer:") + || LOOKING_AT_NOCASE (bp, "field")) + get_tag (skip_spaces (bp), NULL); /* Yay! A definition! */ + else + bp = skip_non_spaces (bp); +} + + +/* + * Scheme tag functions + * look for (def... xyzzy + * (def... (xyzzy + * (def ... ((...(xyzzy .... + * (set! xyzzy + * Original code by Ken Haase (1985?) + */ +static void +Scheme_functions (FILE *inf) +{ + register char *bp; + + LOOP_ON_INPUT_LINES (inf, lb, bp) + { + if (strneq (bp, "(def", 4) || strneq (bp, "(DEF", 4)) + { + bp = skip_non_spaces (bp+4); + /* Skip over open parens and white space. Don't continue past + '\0'. */ + while (*bp && notinname (*bp)) + bp++; + get_tag (bp, NULL); + } + if (LOOKING_AT (bp, "(SET!") || LOOKING_AT (bp, "(set!")) + get_tag (bp, NULL); + } +} + + +/* Find tags in TeX and LaTeX input files. */ + +/* TEX_toktab is a table of TeX control sequences that define tags. + * Each entry records one such control sequence. + * + * Original code from who knows whom. + * Ideas by: + * Stefan Monnier (2002) + */ + +static linebuffer *TEX_toktab = NULL; /* Table with tag tokens */ + +/* Default set of control sequences to put into TEX_toktab. + The value of environment var TEXTAGS is prepended to this. */ +static const char *TEX_defenv = "\ +:chapter:section:subsection:subsubsection:eqno:label:ref:cite:bibitem\ +:part:appendix:entry:index:def\ +:newcommand:renewcommand:newenvironment:renewenvironment"; + +static void TEX_mode (FILE *); +static void TEX_decode_env (const char *, const char *); + +static char TEX_esc = '\\'; +static char TEX_opgrp = '{'; +static char TEX_clgrp = '}'; + +/* + * TeX/LaTeX scanning loop. + */ +static void +TeX_commands (FILE *inf) +{ + char *cp; + linebuffer *key; + + /* Select either \ or ! as escape character. */ + TEX_mode (inf); + + /* Initialize token table once from environment. */ + if (TEX_toktab == NULL) + TEX_decode_env ("TEXTAGS", TEX_defenv); + + LOOP_ON_INPUT_LINES (inf, lb, cp) + { + /* Look at each TEX keyword in line. */ + for (;;) + { + /* Look for a TEX escape. */ + while (*cp++ != TEX_esc) + if (cp[-1] == '\0' || cp[-1] == '%') + goto tex_next_line; + + for (key = TEX_toktab; key->buffer != NULL; key++) + if (strneq (cp, key->buffer, key->len)) + { + char *p; + int namelen, linelen; + bool opgrp = false; + + cp = skip_spaces (cp + key->len); + if (*cp == TEX_opgrp) + { + opgrp = true; + cp++; + } + for (p = cp; + (!iswhite (*p) && *p != '#' && + *p != TEX_opgrp && *p != TEX_clgrp); + p++) + continue; + namelen = p - cp; + linelen = lb.len; + if (!opgrp || *p == TEX_clgrp) + { + while (*p != '\0' && *p != TEX_opgrp && *p != TEX_clgrp) + p++; + linelen = p - lb.buffer + 1; + } + make_tag (cp, namelen, true, + lb.buffer, linelen, lineno, linecharno); + goto tex_next_line; /* We only tag a line once */ + } + } + tex_next_line: + ; + } +} + +#define TEX_LESC '\\' +#define TEX_SESC '!' + +/* Figure out whether TeX's escapechar is '\\' or '!' and set grouping + chars accordingly. */ +static void +TEX_mode (FILE *inf) +{ + int c; + + while ((c = getc (inf)) != EOF) + { + /* Skip to next line if we hit the TeX comment char. */ + if (c == '%') + while (c != '\n' && c != EOF) + c = getc (inf); + else if (c == TEX_LESC || c == TEX_SESC ) + break; + } + + if (c == TEX_LESC) + { + TEX_esc = TEX_LESC; + TEX_opgrp = '{'; + TEX_clgrp = '}'; + } + else + { + TEX_esc = TEX_SESC; + TEX_opgrp = '<'; + TEX_clgrp = '>'; + } + /* If the input file is compressed, inf is a pipe, and rewind may fail. + No attempt is made to correct the situation. */ + rewind (inf); +} + +/* Read environment and prepend it to the default string. + Build token table. */ +static void +TEX_decode_env (const char *evarname, const char *defenv) +{ + register const char *env, *p; + int i, len; + + /* Append default string to environment. */ + env = getenv (evarname); + if (!env) + env = defenv; + else + env = concat (env, defenv, ""); + + /* Allocate a token table */ + for (len = 1, p = env; p;) + if ((p = strchr (p, ':')) && *++p != '\0') + len++; + TEX_toktab = xnew (len, linebuffer); + + /* Unpack environment string into token table. Be careful about */ + /* zero-length strings (leading ':', "::" and trailing ':') */ + for (i = 0; *env != '\0';) + { + p = strchr (env, ':'); + if (!p) /* End of environment string. */ + p = env + strlen (env); + if (p - env > 0) + { /* Only non-zero strings. */ + TEX_toktab[i].buffer = savenstr (env, p - env); + TEX_toktab[i].len = p - env; + i++; + } + if (*p) + env = p + 1; + else + { + TEX_toktab[i].buffer = NULL; /* Mark end of table. */ + TEX_toktab[i].len = 0; + break; + } + } +} + + +/* Texinfo support. Dave Love, Mar. 2000. */ +static void +Texinfo_nodes (FILE *inf) +{ + char *cp, *start; + LOOP_ON_INPUT_LINES (inf, lb, cp) + if (LOOKING_AT (cp, "@node")) + { + start = cp; + while (*cp != '\0' && *cp != ',') + cp++; + make_tag (start, cp - start, true, + lb.buffer, cp - lb.buffer + 1, lineno, linecharno); + } +} + + +/* + * HTML support. + * Contents of , <h1>, <h2>, <h3> are tags. + * Contents of <a name=xxx> are tags with name xxx. + * + * Francesco Potortì, 2002. + */ +static void +HTML_labels (FILE *inf) +{ + bool getnext = false; /* next text outside of HTML tags is a tag */ + bool skiptag = false; /* skip to the end of the current HTML tag */ + bool intag = false; /* inside an html tag, looking for ID= */ + bool inanchor = false; /* when INTAG, is an anchor, look for NAME= */ + char *end; + + + linebuffer_setlen (&token_name, 0); /* no name in buffer */ + + LOOP_ON_INPUT_LINES (inf, lb, dbp) + for (;;) /* loop on the same line */ + { + if (skiptag) /* skip HTML tag */ + { + while (*dbp != '\0' && *dbp != '>') + dbp++; + if (*dbp == '>') + { + dbp += 1; + skiptag = false; + continue; /* look on the same line */ + } + break; /* go to next line */ + } + + else if (intag) /* look for "name=" or "id=" */ + { + while (*dbp != '\0' && *dbp != '>' + && lowcase (*dbp) != 'n' && lowcase (*dbp) != 'i') + dbp++; + if (*dbp == '\0') + break; /* go to next line */ + if (*dbp == '>') + { + dbp += 1; + intag = false; + continue; /* look on the same line */ + } + if ((inanchor && LOOKING_AT_NOCASE (dbp, "name=")) + || LOOKING_AT_NOCASE (dbp, "id=")) + { + bool quoted = (dbp[0] == '"'); + + if (quoted) + for (end = ++dbp; *end != '\0' && *end != '"'; end++) + continue; + else + for (end = dbp; *end != '\0' && intoken (*end); end++) + continue; + linebuffer_setlen (&token_name, end - dbp); + memcpy (token_name.buffer, dbp, end - dbp); + token_name.buffer[end - dbp] = '\0'; + + dbp = end; + intag = false; /* we found what we looked for */ + skiptag = true; /* skip to the end of the tag */ + getnext = true; /* then grab the text */ + continue; /* look on the same line */ + } + dbp += 1; + } + + else if (getnext) /* grab next tokens and tag them */ + { + dbp = skip_spaces (dbp); + if (*dbp == '\0') + break; /* go to next line */ + if (*dbp == '<') + { + intag = true; + inanchor = (lowcase (dbp[1]) == 'a' && !intoken (dbp[2])); + continue; /* look on the same line */ + } + + for (end = dbp + 1; *end != '\0' && *end != '<'; end++) + continue; + make_tag (token_name.buffer, token_name.len, true, + dbp, end - dbp, lineno, linecharno); + linebuffer_setlen (&token_name, 0); /* no name in buffer */ + getnext = false; + break; /* go to next line */ + } + + else /* look for an interesting HTML tag */ + { + while (*dbp != '\0' && *dbp != '<') + dbp++; + if (*dbp == '\0') + break; /* go to next line */ + intag = true; + if (lowcase (dbp[1]) == 'a' && !intoken (dbp[2])) + { + inanchor = true; + continue; /* look on the same line */ + } + else if (LOOKING_AT_NOCASE (dbp, "<title>") + || LOOKING_AT_NOCASE (dbp, "<h1>") + || LOOKING_AT_NOCASE (dbp, "<h2>") + || LOOKING_AT_NOCASE (dbp, "<h3>")) + { + intag = false; + getnext = true; + continue; /* look on the same line */ + } + dbp += 1; + } + } +} + + +/* + * Prolog support + * + * Assumes that the predicate or rule starts at column 0. + * Only the first clause of a predicate or rule is added. + * Original code by Sunichirou Sugou (1989) + * Rewritten by Anders Lindgren (1996) + */ +static size_t prolog_pr (char *, char *); +static void prolog_skip_comment (linebuffer *, FILE *); +static size_t prolog_atom (char *, size_t); + +static void +Prolog_functions (FILE *inf) +{ + char *cp, *last; + size_t len; + size_t allocated; + + allocated = 0; + len = 0; + last = NULL; + + LOOP_ON_INPUT_LINES (inf, lb, cp) + { + if (cp[0] == '\0') /* Empty line */ + continue; + else if (iswhite (cp[0])) /* Not a predicate */ + continue; + else if (cp[0] == '/' && cp[1] == '*') /* comment. */ + prolog_skip_comment (&lb, inf); + else if ((len = prolog_pr (cp, last)) > 0) + { + /* Predicate or rule. Store the function name so that we + only generate a tag for the first clause. */ + if (last == NULL) + last = xnew (len + 1, char); + else if (len + 1 > allocated) + xrnew (last, len + 1, char); + allocated = len + 1; + memcpy (last, cp, len); + last[len] = '\0'; + } + } + free (last); +} + + +static void +prolog_skip_comment (linebuffer *plb, FILE *inf) +{ + char *cp; + + do + { + for (cp = plb->buffer; *cp != '\0'; cp++) + if (cp[0] == '*' && cp[1] == '/') + return; + readline (plb, inf); + } + while (!feof (inf)); +} + +/* + * A predicate or rule definition is added if it matches: + * <beginning of line><Prolog Atom><whitespace>( + * or <beginning of line><Prolog Atom><whitespace>:- + * + * It is added to the tags database if it doesn't match the + * name of the previous clause header. + * + * Return the size of the name of the predicate or rule, or 0 if no + * header was found. + */ +static size_t +prolog_pr (char *s, char *last) + + /* Name of last clause. */ +{ + size_t pos; + size_t len; + + pos = prolog_atom (s, 0); + if (! pos) + return 0; + + len = pos; + pos = skip_spaces (s + pos) - s; + + if ((s[pos] == '.' + || (s[pos] == '(' && (pos += 1)) + || (s[pos] == ':' && s[pos + 1] == '-' && (pos += 2))) + && (last == NULL /* save only the first clause */ + || len != strlen (last) + || !strneq (s, last, len))) + { + make_tag (s, len, true, s, pos, lineno, linecharno); + return len; + } + else + return 0; +} + +/* + * Consume a Prolog atom. + * Return the number of bytes consumed, or 0 if there was an error. + * + * A prolog atom, in this context, could be one of: + * - An alphanumeric sequence, starting with a lower case letter. + * - A quoted arbitrary string. Single quotes can escape themselves. + * Backslash quotes everything. + */ +static size_t +prolog_atom (char *s, size_t pos) +{ + size_t origpos; + + origpos = pos; + + if (ISLOWER (s[pos]) || (s[pos] == '_')) + { + /* The atom is unquoted. */ + pos++; + while (ISALNUM (s[pos]) || (s[pos] == '_')) + { + pos++; + } + return pos - origpos; + } + else if (s[pos] == '\'') + { + pos++; + + for (;;) + { + if (s[pos] == '\'') + { + pos++; + if (s[pos] != '\'') + break; + pos++; /* A double quote */ + } + else if (s[pos] == '\0') + /* Multiline quoted atoms are ignored. */ + return 0; + else if (s[pos] == '\\') + { + if (s[pos+1] == '\0') + return 0; + pos += 2; + } + else + pos++; + } + return pos - origpos; + } + else + return 0; +} + + +/* + * Support for Erlang + * + * Generates tags for functions, defines, and records. + * Assumes that Erlang functions start at column 0. + * Original code by Anders Lindgren (1996) + */ +static int erlang_func (char *, char *); +static void erlang_attribute (char *); +static int erlang_atom (char *); + +static void +Erlang_functions (FILE *inf) +{ + char *cp, *last; + int len; + int allocated; + + allocated = 0; + len = 0; + last = NULL; + + LOOP_ON_INPUT_LINES (inf, lb, cp) + { + if (cp[0] == '\0') /* Empty line */ + continue; + else if (iswhite (cp[0])) /* Not function nor attribute */ + continue; + else if (cp[0] == '%') /* comment */ + continue; + else if (cp[0] == '"') /* Sometimes, strings start in column one */ + continue; + else if (cp[0] == '-') /* attribute, e.g. "-define" */ + { + erlang_attribute (cp); + if (last != NULL) + { + free (last); + last = NULL; + } + } + else if ((len = erlang_func (cp, last)) > 0) + { + /* + * Function. Store the function name so that we only + * generates a tag for the first clause. + */ + if (last == NULL) + last = xnew (len + 1, char); + else if (len + 1 > allocated) + xrnew (last, len + 1, char); + allocated = len + 1; + memcpy (last, cp, len); + last[len] = '\0'; + } + } + free (last); +} + + +/* + * A function definition is added if it matches: + * <beginning of line><Erlang Atom><whitespace>( + * + * It is added to the tags database if it doesn't match the + * name of the previous clause header. + * + * Return the size of the name of the function, or 0 if no function + * was found. + */ +static int +erlang_func (char *s, char *last) + + /* Name of last clause. */ +{ + int pos; + int len; + + pos = erlang_atom (s); + if (pos < 1) + return 0; + + len = pos; + pos = skip_spaces (s + pos) - s; + + /* Save only the first clause. */ + if (s[pos++] == '(' + && (last == NULL + || len != (int)strlen (last) + || !strneq (s, last, len))) + { + make_tag (s, len, true, s, pos, lineno, linecharno); + return len; + } + + return 0; +} + + +/* + * Handle attributes. Currently, tags are generated for defines + * and records. + * + * They are on the form: + * -define(foo, bar). + * -define(Foo(M, N), M+N). + * -record(graph, {vtab = notable, cyclic = true}). + */ +static void +erlang_attribute (char *s) +{ + char *cp = s; + + if ((LOOKING_AT (cp, "-define") || LOOKING_AT (cp, "-record")) + && *cp++ == '(') + { + int len = erlang_atom (skip_spaces (cp)); + if (len > 0) + make_tag (cp, len, true, s, cp + len - s, lineno, linecharno); + } + return; +} + + +/* + * Consume an Erlang atom (or variable). + * Return the number of bytes consumed, or -1 if there was an error. + */ +static int +erlang_atom (char *s) +{ + int pos = 0; + + if (ISALPHA (s[pos]) || s[pos] == '_') + { + /* The atom is unquoted. */ + do + pos++; + while (ISALNUM (s[pos]) || s[pos] == '_'); + } + else if (s[pos] == '\'') + { + for (pos++; s[pos] != '\''; pos++) + if (s[pos] == '\0' /* multiline quoted atoms are ignored */ + || (s[pos] == '\\' && s[++pos] == '\0')) + return 0; + pos++; + } + + return pos; +} + + +static char *scan_separators (char *); +static void add_regex (char *, language *); +static char *substitute (char *, char *, struct re_registers *); + +/* + * Take a string like "/blah/" and turn it into "blah", verifying + * that the first and last characters are the same, and handling + * quoted separator characters. Actually, stops on the occurrence of + * an unquoted separator. Also process \t, \n, etc. and turn into + * appropriate characters. Works in place. Null terminates name string. + * Returns pointer to terminating separator, or NULL for + * unterminated regexps. + */ +static char * +scan_separators (char *name) +{ + char sep = name[0]; + char *copyto = name; + bool quoted = false; + + for (++name; *name != '\0'; ++name) + { + if (quoted) + { + switch (*name) + { + case 'a': *copyto++ = '\007'; break; /* BEL (bell) */ + case 'b': *copyto++ = '\b'; break; /* BS (back space) */ + case 'd': *copyto++ = 0177; break; /* DEL (delete) */ + case 'e': *copyto++ = 033; break; /* ESC (delete) */ + case 'f': *copyto++ = '\f'; break; /* FF (form feed) */ + case 'n': *copyto++ = '\n'; break; /* NL (new line) */ + case 'r': *copyto++ = '\r'; break; /* CR (carriage return) */ + case 't': *copyto++ = '\t'; break; /* TAB (horizontal tab) */ + case 'v': *copyto++ = '\v'; break; /* VT (vertical tab) */ + default: + if (*name == sep) + *copyto++ = sep; + else + { + /* Something else is quoted, so preserve the quote. */ + *copyto++ = '\\'; + *copyto++ = *name; + } + break; + } + quoted = false; + } + else if (*name == '\\') + quoted = true; + else if (*name == sep) + break; + else + *copyto++ = *name; + } + if (*name != sep) + name = NULL; /* signal unterminated regexp */ + + /* Terminate copied string. */ + *copyto = '\0'; + return name; +} + +/* Look at the argument of --regex or --no-regex and do the right + thing. Same for each line of a regexp file. */ +static void +analyze_regex (char *regex_arg) +{ + if (regex_arg == NULL) + { + free_regexps (); /* --no-regex: remove existing regexps */ + return; + } + + /* A real --regexp option or a line in a regexp file. */ + switch (regex_arg[0]) + { + /* Comments in regexp file or null arg to --regex. */ + case '\0': + case ' ': + case '\t': + break; + + /* Read a regex file. This is recursive and may result in a + loop, which will stop when the file descriptors are exhausted. */ + case '@': + { + FILE *regexfp; + linebuffer regexbuf; + char *regexfile = regex_arg + 1; + + /* regexfile is a file containing regexps, one per line. */ + regexfp = fopen (regexfile, "r" FOPEN_BINARY); + if (regexfp == NULL) + pfatal (regexfile); + linebuffer_init (®exbuf); + while (readline_internal (®exbuf, regexfp) > 0) + analyze_regex (regexbuf.buffer); + free (regexbuf.buffer); + fclose (regexfp); + } + break; + + /* Regexp to be used for a specific language only. */ + case '{': + { + language *lang; + char *lang_name = regex_arg + 1; + char *cp; + + for (cp = lang_name; *cp != '}'; cp++) + if (*cp == '\0') + { + error ("unterminated language name in regex: %s", regex_arg); + return; + } + *cp++ = '\0'; + lang = get_language_from_langname (lang_name); + if (lang == NULL) + return; + add_regex (cp, lang); + } + break; + + /* Regexp to be used for any language. */ + default: + add_regex (regex_arg, NULL); + break; + } +} + +/* Separate the regexp pattern, compile it, + and care for optional name and modifiers. */ +static void +add_regex (char *regexp_pattern, language *lang) +{ + static struct re_pattern_buffer zeropattern; + char sep, *pat, *name, *modifiers; + char empty = '\0'; + const char *err; + struct re_pattern_buffer *patbuf; + regexp *rp; + bool + force_explicit_name = true, /* do not use implicit tag names */ + ignore_case = false, /* case is significant */ + multi_line = false, /* matches are done one line at a time */ + single_line = false; /* dot does not match newline */ + + + if (strlen (regexp_pattern) < 3) + { + error ("null regexp"); + return; + } + sep = regexp_pattern[0]; + name = scan_separators (regexp_pattern); + if (name == NULL) + { + error ("%s: unterminated regexp", regexp_pattern); + return; + } + if (name[1] == sep) + { + error ("null name for regexp \"%s\"", regexp_pattern); + return; + } + modifiers = scan_separators (name); + if (modifiers == NULL) /* no terminating separator --> no name */ + { + modifiers = name; + name = ∅ + } + else + modifiers += 1; /* skip separator */ + + /* Parse regex modifiers. */ + for (; modifiers[0] != '\0'; modifiers++) + switch (modifiers[0]) + { + case 'N': + if (modifiers == name) + error ("forcing explicit tag name but no name, ignoring"); + force_explicit_name = true; + break; + case 'i': + ignore_case = true; + break; + case 's': + single_line = true; + /* FALLTHRU */ + case 'm': + multi_line = true; + need_filebuf = true; + break; + default: + error ("invalid regexp modifier `%c', ignoring", modifiers[0]); + break; + } + + patbuf = xnew (1, struct re_pattern_buffer); + *patbuf = zeropattern; + if (ignore_case) + { + static char lc_trans[CHARS]; + int i; + for (i = 0; i < CHARS; i++) + lc_trans[i] = lowcase (i); + patbuf->translate = lc_trans; /* translation table to fold case */ + } + + if (multi_line) + pat = concat ("^", regexp_pattern, ""); /* anchor to beginning of line */ + else + pat = regexp_pattern; + + if (single_line) + re_set_syntax (RE_SYNTAX_EMACS | RE_DOT_NEWLINE); + else + re_set_syntax (RE_SYNTAX_EMACS); + + err = re_compile_pattern (pat, strlen (pat), patbuf); + if (multi_line) + free (pat); + if (err != NULL) + { + error ("%s while compiling pattern", err); + return; + } + + rp = p_head; + p_head = xnew (1, regexp); + p_head->pattern = savestr (regexp_pattern); + p_head->p_next = rp; + p_head->lang = lang; + p_head->pat = patbuf; + p_head->name = savestr (name); + p_head->error_signaled = false; + p_head->force_explicit_name = force_explicit_name; + p_head->ignore_case = ignore_case; + p_head->multi_line = multi_line; +} + +/* + * Do the substitutions indicated by the regular expression and + * arguments. + */ +static char * +substitute (char *in, char *out, struct re_registers *regs) +{ + char *result, *t; + int size, dig, diglen; + + result = NULL; + size = strlen (out); + + /* Pass 1: figure out how much to allocate by finding all \N strings. */ + if (out[size - 1] == '\\') + fatal ("pattern error in \"%s\"", out); + for (t = strchr (out, '\\'); + t != NULL; + t = strchr (t + 2, '\\')) + if (ISDIGIT (t[1])) + { + dig = t[1] - '0'; + diglen = regs->end[dig] - regs->start[dig]; + size += diglen - 2; + } + else + size -= 1; + + /* Allocate space and do the substitutions. */ + assert (size >= 0); + result = xnew (size + 1, char); + + for (t = result; *out != '\0'; out++) + if (*out == '\\' && ISDIGIT (*++out)) + { + dig = *out - '0'; + diglen = regs->end[dig] - regs->start[dig]; + memcpy (t, in + regs->start[dig], diglen); + t += diglen; + } + else + *t++ = *out; + *t = '\0'; + + assert (t <= result + size); + assert (t - result == (int)strlen (result)); + + return result; +} + +/* Deallocate all regexps. */ +static void +free_regexps (void) +{ + regexp *rp; + while (p_head != NULL) + { + rp = p_head->p_next; + free (p_head->pattern); + free (p_head->name); + free (p_head); + p_head = rp; + } + return; +} + +/* + * Reads the whole file as a single string from `filebuf' and looks for + * multi-line regular expressions, creating tags on matches. + * readline already dealt with normal regexps. + * + * Idea by Ben Wing <ben@666.com> (2002). + */ +static void +regex_tag_multiline (void) +{ + char *buffer = filebuf.buffer; + regexp *rp; + char *name; + + for (rp = p_head; rp != NULL; rp = rp->p_next) + { + int match = 0; + + if (!rp->multi_line) + continue; /* skip normal regexps */ + + /* Generic initializations before parsing file from memory. */ + lineno = 1; /* reset global line number */ + charno = 0; /* reset global char number */ + linecharno = 0; /* reset global char number of line start */ + + /* Only use generic regexps or those for the current language. */ + if (rp->lang != NULL && rp->lang != curfdp->lang) + continue; + + while (match >= 0 && match < filebuf.len) + { + match = re_search (rp->pat, buffer, filebuf.len, charno, + filebuf.len - match, &rp->regs); + switch (match) + { + case -2: + /* Some error. */ + if (!rp->error_signaled) + { + error ("regexp stack overflow while matching \"%s\"", + rp->pattern); + rp->error_signaled = true; + } + break; + case -1: + /* No match. */ + break; + default: + if (match == rp->regs.end[0]) + { + if (!rp->error_signaled) + { + error ("regexp matches the empty string: \"%s\"", + rp->pattern); + rp->error_signaled = true; + } + match = -3; /* exit from while loop */ + break; + } + + /* Match occurred. Construct a tag. */ + while (charno < rp->regs.end[0]) + if (buffer[charno++] == '\n') + lineno++, linecharno = charno; + name = rp->name; + if (name[0] == '\0') + name = NULL; + else /* make a named tag */ + name = substitute (buffer, rp->name, &rp->regs); + if (rp->force_explicit_name) + /* Force explicit tag name, if a name is there. */ + pfnote (name, true, buffer + linecharno, + charno - linecharno + 1, lineno, linecharno); + else + make_tag (name, strlen (name), true, buffer + linecharno, + charno - linecharno + 1, lineno, linecharno); + break; + } + } + } +} + + +static bool +nocase_tail (const char *cp) +{ + register int len = 0; + + while (*cp != '\0' && lowcase (*cp) == lowcase (dbp[len])) + cp++, len++; + if (*cp == '\0' && !intoken (dbp[len])) + { + dbp += len; + return true; + } + return false; +} + +static void +get_tag (register char *bp, char **namepp) +{ + register char *cp = bp; + + if (*bp != '\0') + { + /* Go till you get to white space or a syntactic break */ + for (cp = bp + 1; !notinname (*cp); cp++) + continue; + make_tag (bp, cp - bp, true, + lb.buffer, cp - lb.buffer + 1, lineno, linecharno); + } + + if (namepp != NULL) + *namepp = savenstr (bp, cp - bp); +} + +/* + * Read a line of text from `stream' into `lbp', excluding the + * newline or CR-NL, if any. Return the number of characters read from + * `stream', which is the length of the line including the newline. + * + * On DOS or Windows we do not count the CR character, if any before the + * NL, in the returned length; this mirrors the behavior of Emacs on those + * platforms (for text files, it translates CR-NL to NL as it reads in the + * file). + * + * If multi-line regular expressions are requested, each line read is + * appended to `filebuf'. + */ +static long +readline_internal (linebuffer *lbp, register FILE *stream) +{ + char *buffer = lbp->buffer; + register char *p = lbp->buffer; + register char *pend; + int chars_deleted; + + pend = p + lbp->size; /* Separate to avoid 386/IX compiler bug. */ + + for (;;) + { + register int c = getc (stream); + if (p == pend) + { + /* We're at the end of linebuffer: expand it. */ + lbp->size *= 2; + xrnew (buffer, lbp->size, char); + p += buffer - lbp->buffer; + pend = buffer + lbp->size; + lbp->buffer = buffer; + } + if (c == EOF) + { + *p = '\0'; + chars_deleted = 0; + break; + } + if (c == '\n') + { + if (p > buffer && p[-1] == '\r') + { + p -= 1; +#ifdef DOS_NT + /* Assume CRLF->LF translation will be performed by Emacs + when loading this file, so CRs won't appear in the buffer. + It would be cleaner to compensate within Emacs; + however, Emacs does not know how many CRs were deleted + before any given point in the file. */ + chars_deleted = 1; +#else + chars_deleted = 2; +#endif + } + else + { + chars_deleted = 1; + } + *p = '\0'; + break; + } + *p++ = c; + } + lbp->len = p - buffer; + + if (need_filebuf /* we need filebuf for multi-line regexps */ + && chars_deleted > 0) /* not at EOF */ + { + while (filebuf.size <= filebuf.len + lbp->len + 1) /* +1 for \n */ + { + /* Expand filebuf. */ + filebuf.size *= 2; + xrnew (filebuf.buffer, filebuf.size, char); + } + memcpy (filebuf.buffer + filebuf.len, lbp->buffer, lbp->len); + filebuf.len += lbp->len; + filebuf.buffer[filebuf.len++] = '\n'; + filebuf.buffer[filebuf.len] = '\0'; + } + + return lbp->len + chars_deleted; +} + +/* + * Like readline_internal, above, but in addition try to match the + * input line against relevant regular expressions and manage #line + * directives. + */ +static void +readline (linebuffer *lbp, FILE *stream) +{ + long result; + + linecharno = charno; /* update global char number of line start */ + result = readline_internal (lbp, stream); /* read line */ + lineno += 1; /* increment global line number */ + charno += result; /* increment global char number */ + + /* Honor #line directives. */ + if (!no_line_directive) + { + static bool discard_until_line_directive; + + /* Check whether this is a #line directive. */ + if (result > 12 && strneq (lbp->buffer, "#line ", 6)) + { + unsigned int lno; + int start = 0; + + if (sscanf (lbp->buffer, "#line %u \"%n", &lno, &start) >= 1 + && start > 0) /* double quote character found */ + { + char *endp = lbp->buffer + start; + + while ((endp = strchr (endp, '"')) != NULL + && endp[-1] == '\\') + endp++; + if (endp != NULL) + /* Ok, this is a real #line directive. Let's deal with it. */ + { + char *taggedabsname; /* absolute name of original file */ + char *taggedfname; /* name of original file as given */ + char *name; /* temp var */ + + discard_until_line_directive = false; /* found it */ + name = lbp->buffer + start; + *endp = '\0'; + canonicalize_filename (name); + taggedabsname = absolute_filename (name, tagfiledir); + if (filename_is_absolute (name) + || filename_is_absolute (curfdp->infname)) + taggedfname = savestr (taggedabsname); + else + taggedfname = relative_filename (taggedabsname,tagfiledir); + + if (streq (curfdp->taggedfname, taggedfname)) + /* The #line directive is only a line number change. We + deal with this afterwards. */ + free (taggedfname); + else + /* The tags following this #line directive should be + attributed to taggedfname. In order to do this, set + curfdp accordingly. */ + { + fdesc *fdp; /* file description pointer */ + + /* Go look for a file description already set up for the + file indicated in the #line directive. If there is + one, use it from now until the next #line + directive. */ + for (fdp = fdhead; fdp != NULL; fdp = fdp->next) + if (streq (fdp->infname, curfdp->infname) + && streq (fdp->taggedfname, taggedfname)) + /* If we remove the second test above (after the &&) + then all entries pertaining to the same file are + coalesced in the tags file. If we use it, then + entries pertaining to the same file but generated + from different files (via #line directives) will + go into separate sections in the tags file. These + alternatives look equivalent. The first one + destroys some apparently useless information. */ + { + curfdp = fdp; + free (taggedfname); + break; + } + /* Else, if we already tagged the real file, skip all + input lines until the next #line directive. */ + if (fdp == NULL) /* not found */ + for (fdp = fdhead; fdp != NULL; fdp = fdp->next) + if (streq (fdp->infabsname, taggedabsname)) + { + discard_until_line_directive = true; + free (taggedfname); + break; + } + /* Else create a new file description and use that from + now on, until the next #line directive. */ + if (fdp == NULL) /* not found */ + { + fdp = fdhead; + fdhead = xnew (1, fdesc); + *fdhead = *curfdp; /* copy curr. file description */ + fdhead->next = fdp; + fdhead->infname = savestr (curfdp->infname); + fdhead->infabsname = savestr (curfdp->infabsname); + fdhead->infabsdir = savestr (curfdp->infabsdir); + fdhead->taggedfname = taggedfname; + fdhead->usecharno = false; + fdhead->prop = NULL; + fdhead->written = false; + curfdp = fdhead; + } + } + free (taggedabsname); + lineno = lno - 1; + readline (lbp, stream); + return; + } /* if a real #line directive */ + } /* if #line is followed by a number */ + } /* if line begins with "#line " */ + + /* If we are here, no #line directive was found. */ + if (discard_until_line_directive) + { + if (result > 0) + { + /* Do a tail recursion on ourselves, thus discarding the contents + of the line buffer. */ + readline (lbp, stream); + return; + } + /* End of file. */ + discard_until_line_directive = false; + return; + } + } /* if #line directives should be considered */ + + { + int match; + regexp *rp; + char *name; + + /* Match against relevant regexps. */ + if (lbp->len > 0) + for (rp = p_head; rp != NULL; rp = rp->p_next) + { + /* Only use generic regexps or those for the current language. + Also do not use multiline regexps, which is the job of + regex_tag_multiline. */ + if ((rp->lang != NULL && rp->lang != fdhead->lang) + || rp->multi_line) + continue; + + match = re_match (rp->pat, lbp->buffer, lbp->len, 0, &rp->regs); + switch (match) + { + case -2: + /* Some error. */ + if (!rp->error_signaled) + { + error ("regexp stack overflow while matching \"%s\"", + rp->pattern); + rp->error_signaled = true; + } + break; + case -1: + /* No match. */ + break; + case 0: + /* Empty string matched. */ + if (!rp->error_signaled) + { + error ("regexp matches the empty string: \"%s\"", rp->pattern); + rp->error_signaled = true; + } + break; + default: + /* Match occurred. Construct a tag. */ + name = rp->name; + if (name[0] == '\0') + name = NULL; + else /* make a named tag */ + name = substitute (lbp->buffer, rp->name, &rp->regs); + if (rp->force_explicit_name) + /* Force explicit tag name, if a name is there. */ + pfnote (name, true, lbp->buffer, match, lineno, linecharno); + else + make_tag (name, strlen (name), true, + lbp->buffer, match, lineno, linecharno); + break; + } + } + } +} + + +/* + * Return a pointer to a space of size strlen(cp)+1 allocated + * with xnew where the string CP has been copied. + */ +static char * +savestr (const char *cp) +{ + return savenstr (cp, strlen (cp)); +} + +/* + * Return a pointer to a space of size LEN+1 allocated with xnew where + * the string CP has been copied for at most the first LEN characters. + */ +static char * +savenstr (const char *cp, int len) +{ + char *dp = xnew (len + 1, char); + dp[len] = '\0'; + return memcpy (dp, cp, len); +} + +/* Skip spaces (end of string is not space), return new pointer. */ +static char * +skip_spaces (char *cp) +{ + while (iswhite (*cp)) + cp++; + return cp; +} + +/* Skip non spaces, except end of string, return new pointer. */ +static char * +skip_non_spaces (char *cp) +{ + while (*cp != '\0' && !iswhite (*cp)) + cp++; + return cp; +} + +/* Skip any chars in the "name" class.*/ +static char * +skip_name (char *cp) +{ + /* '\0' is a notinname() so loop stops there too */ + while (! notinname (*cp)) + cp++; + return cp; +} + +/* Print error message and exit. */ +void +fatal (const char *s1, const char *s2) +{ + error (s1, s2); + exit (EXIT_FAILURE); +} + +static void +pfatal (const char *s1) +{ + perror (s1); + exit (EXIT_FAILURE); +} + +static void +suggest_asking_for_help (void) +{ + fprintf (stderr, "\tTry `%s --help' for a complete list of options.\n", + progname); + exit (EXIT_FAILURE); +} + +/* Output a diagnostic with printf-style FORMAT and args. */ +static void +error (const char *format, ...) +{ + va_list ap; + va_start (ap, format); + fprintf (stderr, "%s: ", progname); + vfprintf (stderr, format, ap); + fprintf (stderr, "\n"); + va_end (ap); +} + +/* Return a newly-allocated string whose contents + concatenate those of s1, s2, s3. */ +static char * +concat (const char *s1, const char *s2, const char *s3) +{ + int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3); + char *result = xnew (len1 + len2 + len3 + 1, char); + + strcpy (result, s1); + strcpy (result + len1, s2); + strcpy (result + len1 + len2, s3); + + return result; +} + + +/* Does the same work as the system V getcwd, but does not need to + guess the buffer size in advance. */ +static char * +etags_getcwd (void) +{ + int bufsize = 200; + char *path = xnew (bufsize, char); + + while (getcwd (path, bufsize) == NULL) + { + if (errno != ERANGE) + pfatal ("getcwd"); + bufsize *= 2; + free (path); + path = xnew (bufsize, char); + } + + canonicalize_filename (path); + return path; +} + +/* Return a newly allocated string containing the file name of FILE + relative to the absolute directory DIR (which should end with a slash). */ +static char * +relative_filename (char *file, char *dir) +{ + char *fp, *dp, *afn, *res; + int i; + + /* Find the common root of file and dir (with a trailing slash). */ + afn = absolute_filename (file, cwd); + fp = afn; + dp = dir; + while (*fp++ == *dp++) + continue; + fp--, dp--; /* back to the first differing char */ +#ifdef DOS_NT + if (fp == afn && afn[0] != '/') /* cannot build a relative name */ + return afn; +#endif + do /* look at the equal chars until '/' */ + fp--, dp--; + while (*fp != '/'); + + /* Build a sequence of "../" strings for the resulting relative file name. */ + i = 0; + while ((dp = strchr (dp + 1, '/')) != NULL) + i += 1; + res = xnew (3*i + strlen (fp + 1) + 1, char); + char *z = res; + while (i-- > 0) + z = stpcpy (z, "../"); + + /* Add the file name relative to the common root of file and dir. */ + strcpy (z, fp + 1); + free (afn); + + return res; +} + +/* Return a newly allocated string containing the absolute file name + of FILE given DIR (which should end with a slash). */ +static char * +absolute_filename (char *file, char *dir) +{ + char *slashp, *cp, *res; + + if (filename_is_absolute (file)) + res = savestr (file); +#ifdef DOS_NT + /* We don't support non-absolute file names with a drive + letter, like `d:NAME' (it's too much hassle). */ + else if (file[1] == ':') + fatal ("%s: relative file names with drive letters not supported", file); +#endif + else + res = concat (dir, file, ""); + + /* Delete the "/dirname/.." and "/." substrings. */ + slashp = strchr (res, '/'); + while (slashp != NULL && slashp[0] != '\0') + { + if (slashp[1] == '.') + { + if (slashp[2] == '.' + && (slashp[3] == '/' || slashp[3] == '\0')) + { + cp = slashp; + do + cp--; + while (cp >= res && !filename_is_absolute (cp)); + if (cp < res) + cp = slashp; /* the absolute name begins with "/.." */ +#ifdef DOS_NT + /* Under MSDOS and NT we get `d:/NAME' as absolute + file name, so the luser could say `d:/../NAME'. + We silently treat this as `d:/NAME'. */ + else if (cp[0] != '/') + cp = slashp; +#endif + memmove (cp, slashp + 3, strlen (slashp + 2)); + slashp = cp; + continue; + } + else if (slashp[2] == '/' || slashp[2] == '\0') + { + memmove (slashp, slashp + 2, strlen (slashp + 1)); + continue; + } + } + + slashp = strchr (slashp + 1, '/'); + } + + if (res[0] == '\0') /* just a safety net: should never happen */ + { + free (res); + return savestr ("/"); + } + else + return res; +} + +/* Return a newly allocated string containing the absolute + file name of dir where FILE resides given DIR (which should + end with a slash). */ +static char * +absolute_dirname (char *file, char *dir) +{ + char *slashp, *res; + char save; + + slashp = strrchr (file, '/'); + if (slashp == NULL) + return savestr (dir); + save = slashp[1]; + slashp[1] = '\0'; + res = absolute_filename (file, dir); + slashp[1] = save; + + return res; +} + +/* Whether the argument string is an absolute file name. The argument + string must have been canonicalized with canonicalize_filename. */ +static bool +filename_is_absolute (char *fn) +{ + return (fn[0] == '/' +#ifdef DOS_NT + || (ISALPHA (fn[0]) && fn[1] == ':' && fn[2] == '/') +#endif + ); +} + +/* Downcase DOS drive letter and collapse separators into single slashes. + Works in place. */ +static void +canonicalize_filename (register char *fn) +{ + register char* cp; + char sep = '/'; + +#ifdef DOS_NT + /* Canonicalize drive letter case. */ +# define ISUPPER(c) isupper (CHAR (c)) + if (fn[0] != '\0' && fn[1] == ':' && ISUPPER (fn[0])) + fn[0] = lowcase (fn[0]); + + sep = '\\'; +#endif + + /* Collapse multiple separators into a single slash. */ + for (cp = fn; *cp != '\0'; cp++, fn++) + if (*cp == sep) + { + *fn = '/'; + while (cp[1] == sep) + cp++; + } + else + *fn = *cp; + *fn = '\0'; +} + + +/* Initialize a linebuffer for use. */ +static void +linebuffer_init (linebuffer *lbp) +{ + lbp->size = (DEBUG) ? 3 : 200; + lbp->buffer = xnew (lbp->size, char); + lbp->buffer[0] = '\0'; + lbp->len = 0; +} + +/* Set the minimum size of a string contained in a linebuffer. */ +static void +linebuffer_setlen (linebuffer *lbp, int toksize) +{ + while (lbp->size <= toksize) + { + lbp->size *= 2; + xrnew (lbp->buffer, lbp->size, char); + } + lbp->len = toksize; +} + +/* Like malloc but get fatal error if memory is exhausted. */ +static void * +xmalloc (size_t size) +{ + void *result = malloc (size); + if (result == NULL) + fatal ("virtual memory exhausted", (char *)NULL); + return result; +} + +static void * +xrealloc (void *ptr, size_t size) +{ + void *result = realloc (ptr, size); + if (result == NULL) + fatal ("virtual memory exhausted", (char *)NULL); + return result; +} + +/* + * Local Variables: + * indent-tabs-mode: t + * tab-width: 8 + * fill-column: 79 + * c-font-lock-extra-types: ("FILE" "bool" "language" "linebuffer" "fdesc" "node" "regexp") + * c-file-style: "gnu" + * End: + */ + +/* etags.c ends here */ diff --cc test/manual/indent/js.js index 9a1e0dc7ad5,00000000000..d843f615fd8 mode 100644,000000..100644 --- a/test/manual/indent/js.js +++ b/test/manual/indent/js.js @@@ -1,96 -1,0 +1,101 @@@ +var a = 1; +b = 2; + +let c = 1, + d = 2; + +var e = 100500, + + 1; + +function test () +{ + return /[/]/.test ('/') // (bug#19397) +} + +var f = bar('/protocols/') +baz(); + +var h = 100500 +1; + +const i = 1, + j = 2; + +var k = 1, + l = [ + 1, 2, + 3, 4 + ], + m = 5; + +var n = function() { + return 7; +}, + o = 8; + +foo(bar, function() { + return 2; +}); + +switch (b) { +case "a": + 2; +default: + 3; +} + +var p = { + case: 'zzzz', + default: 'donkey', + tee: 'ornery' +}; + +var evens = [e for each (e in range(0, 21)) + if (ed % 2 == 0)]; + +!b + !=b + !==b + +a++ +b += + c + +baz(`http://foo.bar/${tee}`) + .qux(); + +`multiline string + contents + are kept + unchanged!` + +class A { + * x() { + return 1 - * 2; ++ * a(2); ++ } ++ ++ *[Symbol.iterator]() { ++ yield "Foo"; ++ yield "Bar"; + } +} + +if (true) + 1 +else + 2 + +Foobar + .find() + .catch((err) => { + return 2; + }) + .then((num) => { + console.log(num); + }); + +// Local Variables: +// indent-tabs-mode: nil +// js-indent-level: 2 +// End: diff --cc test/manual/indent/ruby.rb index dfd1c75a679,00000000000..585263d02a6 mode 100644,000000..100644 --- a/test/manual/indent/ruby.rb +++ b/test/manual/indent/ruby.rb @@@ -1,418 -1,0 +1,433 @@@ +if something_wrong? # ruby-move-to-block-skips-heredoc + ActiveSupport::Deprecation.warn(<<-eowarn) + boo hoo + end + eowarn + foo + + foo(<<~squiggly) + end + squiggly +end + +def foo + %^bar^ +end + +# Percent literals. +b = %Q{This is a "string"} +c = %w!foo + bar + baz! +d = %(hello (nested) world) + +# Don't propertize percent literals inside strings. +"(%s, %s)" % [123, 456] + +"abc/#{def}ghi" +"abc\#{def}ghi" + +# Or inside comments. +x = # "tot %q/to"; = + y = 2 / 3 + +# Regexp after whitelisted method. +"abc".sub /b/, 'd' + +# Don't mis-match "sub" at the end of words. +a = asub / aslb + bsub / bslb; + +# Highlight the regexp after "if". +x = toto / foo if /do bar/ =~ "dobar" + +# Regexp options are highlighted. + +/foo/xi != %r{bar}mo.tee + +foo { /"tee/ + bar { |qux| /'fee"/ } # bug#20026 +} + +bar(class: XXX) do # ruby-indent-keyword-label + foo +end +bar + +foo = [1, # ruby-deep-indent + 2] + +foo = { # ruby-deep-indent-disabled + a: b +} + +foo = { a: b, + a1: b1 + } + +foo({ # bug#16118 + a: b, + c: d + }) + +bar = foo( + a, [ + 1, + ], + :qux => [ + 3 + ]) + +foo( + [ + { + a: b + }, + ], + { + c: d + } +) + +foo([{ + a: 2 + }, + { + b: 3 + }, + 4 + ]) + +foo = [ # ruby-deep-indent-disabled + 1 +] + +foo( # ruby-deep-indent-disabled + a +) + +# Multiline regexp. +/bars + tees # toots + nfoos/ + +def test1(arg) + puts "hello" +end + +def test2 (arg) + a = "apple" + + if a == 2 + puts "hello" + else + puts "there" + end + + if a == 2 then + puts "hello" + elsif a == 3 + puts "hello3" + elsif a == 3 then + puts "hello3" + else + puts "there" + end + + b = case a + when "a" + 6 + # Support for this syntax was removed in Ruby 1.9, so we + # probably don't need to handle it either. + # when "b" : + # 7 + # when "c" : 2 + when "d" then 4 + else 5 + end +end + +# Some Cucumber code: +Given /toto/ do + print "hello" +end + +# Bug#15208 +if something == :== + do_something + + return false unless method == :+ + x = y + z # Bug#16609 + + a = 1 ? 2 :( + 2 + 3 + ) +end + +# Bug#17097 +if x == :!= + something +end + ++qux :+, ++ bar, ++ :[]=, ++ bar, ++ :a ++ ++b = $: ++c = ?? ++ +# Example from http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html +d = 4 + 5 + # no '\' needed + 6 + 7 + +# Example from http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html +e = 8 + 9 \ + + 10 # '\' needed + +foo = obj.bar { |m| tee(m) } + + obj.qux { |m| hum(m) } + +begin + foo +ensure + bar +end + +# Bug#15369 +MSG = 'Separate every 3 digits in the integer portion of a number' \ + 'with underscores(_).' + +class C + def foo + self.end + D.new.class + end ++ ++ def begin ++ end +end + +a = foo(j, k) - + bar_tee + +while a < b do # "do" is optional + foo +end + +desc "foo foo" \ + "bar bar" + +foo. + bar + +# https://github.com/rails/rails/blob/17f5d8e062909f1fcae25351834d8e89967b645e/activesupport/lib/active_support/time_with_zone.rb#L206 +foo + .bar + +z = { + foo: { + a: "aaa", + b: "bbb" + } +} + +foo if + bar + ++fail "stuff" \ ++ unless all_fine? ++ +if foo? + bar +end + +method arg1, # bug#15594 + method2 arg2, + arg3 + +method? arg1, + arg2 + +method! arg1, + arg2 + +method !arg1, + arg2 + +method [], + arg2 + +method :foo, + :bar + +method (a + b), + c, :d => :e, + f: g + +desc "abc", + defg + +it "is a method call with block" do |asd| + foo +end + +it("is too!") { + bar + .qux +} + +and_this_one(has) { |block, parameters| + tee +} + +if foo && + bar +end + +foo + + bar + +foo and + bar + +foo > bar && + tee < qux + +zux do + foo == bar and + tee == qux +end + +foo ^ + bar + +foo_bar_tee(1, 2, 3) + .qux.bar + .tee + +foo do + bar + .tee +end + +def bar + foo + .baz +end + +# http://stackoverflow.com/questions/17786563/emacs-ruby-mode-if-expressions-indentation +tee = if foo + bar + else + tee + end + +a = b { + c +} + +aa = bb do + cc +end + +foo :bar do + qux +end + +foo do |*args| + tee +end + +bar do |&block| + tee +end + +foo = [1, 2, 3].map do |i| + i + 1 +end + +bar.foo do + bar +end + +bar.foo(tee) do + bar +end + +bar.foo(tee) { + bar +} + +bar 1 do + foo 2 do + tee + end +end + +foo | + bar + +def qux + foo ||= begin + bar + tee + rescue + oomph + end +end + +private def foo + bar +end + +%^abc^ +ddd + +qux = foo.fee ? + bar : + tee + +zoo.keep.bar!( + {x: y, + z: t}) + +zoo + .lose( + q, p) + +a.records().map(&:b).zip( + foo) + +# FIXME: This is not consistent with the example below it, but this +# offset only happens if the colon is at eol, which wouldn't be often. +# Tokenizing `bar:' as `:bar =>' would be better, but it's hard to +# distinguish from a variable reference inside a ternary operator. +foo(bar: + tee) + +foo(:bar => + tee) + +{'a' => { + 'b' => 'c', + 'd' => %w(e f) + } +} + +# Bug#17050 + +return render json: { + errors: { base: [message] }, + copying: copying + }, + status: 400 + +top test( + some, + top, + test) + +foo bar, { + tee: qux + }